Est-il possible de prétraiter des variables uniquement pour certains blocs? J'ai créé une telle fonction: mytheme_preprocess_block__aggregator(&$vars)
mais cela ne fonctionne pas.
-- ÉDITER --
Il semble être corrigé dans Drupal 8 https://drupal.org/node/1751194
Réponses:
Malheureusement, il n'y a aucun moyen de le faire comme ça (similaire à hook_form_alter ()).
La meilleure façon de le faire serait d'utiliser $ variables ['block'] -> bid pour appliquer les modifications uniquement aux blocs que vous souhaitez:
la source
hook_preprocess_block_MODULE()
ouTHEME_preprocess_block_MODULE()
. Il gère d'une manière particulière le__
contenu des noms de fonction de thème, lorsqu'iltheme()
est invoqué commetheme('links__contextual__node', ...)
, par exemple.$variables['block']->bid
et non$variables['block_id']
car 'block_id' n'est pas unique à ce bloc.$variables['block']->delta
si$variables['block']->module == 'MODULE'
Juste pour confirmer, dans Drupal 8, vous pouvez écrire des fonctions de prétraitement pour des blocs spécifiques. Par exemple:
Drupal 8
Mais vous pouvez également utiliser hook_preprocess_block et l'ID du plugin:
Comme mentionné par Alex, dans Drupal 7, vous devrez vous en tenir à HOOK_preprocess_block et à une vérification d'identité:
Drupal 7
la source
MYTHEME_preprocess_block__system_branding_block(&$vars)
fonctionne ni ne fonctionneMYTHEME_preprocess_block__page_title_block(&$variables)
.mytheme_preprocess_block__{my_block_machine_name}(&$variables)
fonctionne sur D8.3