È possibile preelaborare le variabili solo per determinati blocchi? Ho creato tale funzione: mytheme_preprocess_block__aggregator(&$vars)
ma non funziona.
-- MODIFICARE --
Sembra essere stato corretto in Drupal 8 https://drupal.org/node/1751194
È possibile preelaborare le variabili solo per determinati blocchi? Ho creato tale funzione: mytheme_preprocess_block__aggregator(&$vars)
ma non funziona.
-- MODIFICARE --
Sembra essere stato corretto in Drupal 8 https://drupal.org/node/1751194
Risposte:
Sfortunatamente, non c'è modo di farlo in questo modo (simile a hook_form_alter ()).
Il modo migliore per farlo sarebbe usare $ variabili ['blocco'] -> bid per applicare le modifiche solo ai blocchi desiderati:
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()
o THEME_preprocess_block_MODULE()
. Gestisce in modo particolare il __
contenuto dei nomi delle funzioni del tema, quando theme()
viene invocato come theme('links__contextual__node', ...)
, ad esempio.
$variables['block']->bid
e non $variables['block_id']
come 'block_id' non è univoco per quel blocco.
$variables['block']->delta
se$variables['block']->module == 'MODULE'
Giusto per confermare, in Drupal 8 è possibile scrivere funzioni di preelaborazione per blocchi specifici. Per esempio:
Drupal 8
mytheme_preprocess_block__system_branding_block(&$vars) {
// Make changes to the the system branding block
}
Ma potresti anche usare hook_preprocess_block e l'ID del plugin:
function mytheme_preprocess_block(&$vars) {
if ($vars['plugin_id'] == 'system_branding_block') {
// Make changes to the the system branding block
}
}
Come accennato da Alex, in Drupal 7 dovrai rimanere con HOOK_preprocess_block e un controllo dell'id:
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)
funziona né funziona MYTHEME_preprocess_block__page_title_block(&$variables)
.
mytheme_preprocess_block__{my_block_machine_name}(&$variables)
funziona su D8.3