Ist es möglich, Variablen nur für bestimmte Blöcke vorzuverarbeiten? Ich habe eine solche Funktion erstellt: mytheme_preprocess_block__aggregator(&$vars)
aber es funktioniert nicht.
- BEARBEITEN -
Es scheint in Drupal 8 https://drupal.org/node/1751194 behoben zu sein
Antworten:
Leider gibt es keine Möglichkeit, dies so zu tun (ähnlich wie hook_form_alter ()).
Der beste Weg, dies zu tun, wäre, $ variables ['block'] -> bid zu verwenden, um Änderungen nur auf die gewünschten Blöcke anzuwenden:
quelle
hook_preprocess_block_MODULE()
oderTHEME_preprocess_block_MODULE()
. Es behandelt in besonderer Weise die__
in Themenfunktionsnamen enthaltenen Namen, wenn sie beispielsweise alstheme()
aufgerufen werdentheme('links__contextual__node', ...)
.$variables['block']->bid
und nicht,$variables['block_id']
da 'block_id' nicht nur für diesen Block gilt.$variables['block']->delta
wenn$variables['block']->module == 'MODULE'
Zur Bestätigung können Sie in Drupal 8 Vorverarbeitungsfunktionen für bestimmte Blöcke schreiben. Zum Beispiel:
Drupal 8
Sie können aber auch hook_preprocess_block und die Plugin-ID verwenden:
Wie von Alex erwähnt, müssen Sie in Drupal 7 bei HOOK_preprocess_block bleiben und eine ID überprüfen:
Drupal 7
quelle
MYTHEME_preprocess_block__system_branding_block(&$vars)
funktioniert weder noch funktioniertMYTHEME_preprocess_block__page_title_block(&$variables)
.mytheme_preprocess_block__{my_block_machine_name}(&$variables)
arbeitet an D8.3