Возможна ли предварительная обработка переменных только для определенных блоков? Я создал такую функцию: mytheme_preprocess_block__aggregator(&$vars)
но она не работает.
-- РЕДАКТИРОВАТЬ --
Кажется, это исправлено в Drupal 8 https://drupal.org/node/1751194
Ответы:
К сожалению, нет способа сделать это так (аналогично hook_form_alter ()).
Лучший способ сделать это - использовать $ variable ['block'] -> bid, чтобы применить изменения только к тем блокам, которые вы хотите:
источник
hook_preprocess_block_MODULE()
илиTHEME_preprocess_block_MODULE()
. Он обрабатывает определенным образом__
содержащиеся в именах функций темы , например , когдаtheme()
вызывается какtheme('links__contextual__node', ...)
.$variables['block']->bid
а не$variables['block_id']
как block_id не является уникальным для этого блока.$variables['block']->delta
если включить условно$variables['block']->module == 'MODULE'
Просто чтобы подтвердить, в Drupal 8 вы можете написать функции предварительной обработки для определенных блоков. Например:
Drupal 8
Но вы также можете использовать hook_preprocess_block и идентификатор плагина:
Как упомянул Алекс, в Drupal 7 вам придется придерживаться HOOK_preprocess_block и проверки идентификатора:
Drupal 7
источник
MYTHEME_preprocess_block__system_branding_block(&$vars)
работает, ни делаетMYTHEME_preprocess_block__page_title_block(&$variables)
.mytheme_preprocess_block__{my_block_machine_name}(&$variables)
работает на D8.3