É possível pré-processar variáveis apenas para determinados blocos? Eu criei essa função: mytheme_preprocess_block__aggregator(&$vars)
mas não funciona.
- EDITAR -
Parece estar corrigido no Drupal 8 https://drupal.org/node/1751194
É possível pré-processar variáveis apenas para determinados blocos? Eu criei essa função: mytheme_preprocess_block__aggregator(&$vars)
mas não funciona.
- EDITAR -
Parece estar corrigido no Drupal 8 https://drupal.org/node/1751194
Respostas:
Infelizmente, não há como fazê-lo dessa maneira (semelhante a hook_form_alter ()).
A melhor maneira de fazer isso seria usar $ variables ['block'] -> bid para aplicar modificações apenas nos blocos que você deseja:
function mytheme_preprocess_block(&$variables) {
if ($variables['block']->bid === 'target_block_id') {
// do something for this block
} else if ($variables['block']->bid === 'other_target_block_id') {
// do something else for this other block
}
}
hook_preprocess_block_MODULE()
ou THEME_preprocess_block_MODULE()
. Ele lida de maneira específica com o __
contido nos nomes de função do tema, quando theme()
é chamado como theme('links__contextual__node', ...)
, por exemplo.
$variables['block']->bid
e não $variables['block_id']
como 'block_id' não é exclusivo para esse bloco.
$variables['block']->delta
se$variables['block']->module == 'MODULE'
Apenas para confirmar, no Drupal 8 você pode escrever funções de pré-processamento para blocos específicos. Por exemplo:
Drupal 8
mytheme_preprocess_block__system_branding_block(&$vars) {
// Make changes to the the system branding block
}
Mas você também pode usar hook_preprocess_block e o ID do plug-in:
function mytheme_preprocess_block(&$vars) {
if ($vars['plugin_id'] == 'system_branding_block') {
// Make changes to the the system branding block
}
}
Conforme mencionado por Alex, no Drupal 7 você terá que seguir HOOK_preprocess_block e uma verificação de identificação:
Drupal 7
mytheme_preprocess_block(&$vars) {
if ($vars['block']->bid === 'target_block_id') {
// make changes to this block
}
}
MYTHEME_preprocess_block__system_branding_block(&$vars)
funciona nem funciona MYTHEME_preprocess_block__page_title_block(&$variables)
.
mytheme_preprocess_block__{my_block_machine_name}(&$variables)
funciona no D8.3