J'utilise Drupal 7. Pour le moment, j'ai un menu de navigation et un sélecteur de langue dans le titre de mon site Web. Je les ai placés là en allant dans CMS> Structure> Blocks et en faisant glisser les blocs dans la région d'en-tête.
Comment puis-je situer ces blocs par programme dans l'en-tête?
block_example_block_info()
la valeur «région» pourrait être utile à tester.Réponses:
Pour modifier la région où sont placés les blocs définis par d'autres modules, vous pouvez implémenter hook_block_info_alter () , qui reçoit les arguments suivants:
$blocks
(passé par référence): le tableau contenant les définitions de bloc, saisi par module et delta$theme
: le thème pour lequel les blocs sont définis$code_blocks
: les blocs tels que définis à partir deshook_block_info()
implémentations, avant que leurs valeurs soient remplacées par les valeurs obtenues à partir de la base de donnéesla source
Il est légitime d'ajouter un tableau pouvant être rendu à n'importe quelle région de page dans hook_page_build (). Exemple Drupal 7 pour ajouter un minipanel à la zone de pied de page.
Il s'agit de la même technique qui utilise le module de contexte.
Remarque: vous n'avez pas besoin d'activer block.module pour que cela fonctionne.
la source
En D6, ce serait essentiellement
En D7, je pense que c'est
mais je suis toujours à jour sur D7.
la source
drupal_add_region_content()
est une impasse car il est destiné aux pages d'installation / mise à niveau.Si vous ajoutez un bloc personnalisé, vous le faites en utilisant hook_block_info, en définissant l'option de statut sur 1 et l'option de région sur la région dans laquelle vous souhaitez placer le bloc.
Exemple:
Si vous souhaitez modifier un bloc déjà existant, vous utiliserez plutôt hook_block_info_alter (), la mise à jour des mêmes options a montré ci-dessous.
Exemple:
Pour plus d'informations, voir https://api.drupal.org/api/drupal/modules%21block%21block.api.php/function/hook_block_info/7
la source
Ce code est basé sur celui de @ jonhattan, mais le sien ne rend pas le HTML du conteneur de blocs ou les liens contextuels. J'ai également fourni un moyen simple de spécifier tous les blocs et régions en un seul endroit.
Remarque: Contrairement à son code, vous avez besoin du block.module installé.
la source
Ce n'est pas le meilleur formulaire, mais vous pouvez placer manuellement le contenu dans le tableau de pages comme ceci ...
Cependant, vous devez vous en tenir à l'utilisation de Context ou simplement de blocs de base. Faire de nouveaux plugins n'est pas aussi mauvais qu'il n'y paraît. Nommez simplement les fichiers correctement, configurez un déclencheur et un test. exemple .
la source
vous pouvez également ajuster des blocs dans votre thème comme:
la source