Чи можливі змінні попередньої обробки лише для певних блоків? Я створив таку функцію: mytheme_preprocess_block__aggregator(&$vars)
але вона не працює.
- EDIT -
Здається, це зафіксовано в Drupal 8 https://drupal.org/node/1751194
Чи можливі змінні попередньої обробки лише для певних блоків? Я створив таку функцію: mytheme_preprocess_block__aggregator(&$vars)
але вона не працює.
- EDIT -
Здається, це зафіксовано в Drupal 8 https://drupal.org/node/1751194
Відповіді:
На жаль, немає способу зробити це так (подібне до mock_form_alter ()).
Найкращим способом зробити це було б використовувати $ змінні ['блок'] -> ставка, щоб застосувати модифікації лише до потрібних блоків:
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()
або 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 ви можете записати функції попередньої обробки для конкретних блоків. Наприклад:
Друпал 8
mytheme_preprocess_block__system_branding_block(&$vars) {
// Make changes to the the system branding block
}
Але ви можете також використовувати ku_preprocess_block та ідентифікатор плагіна:
function mytheme_preprocess_block(&$vars) {
if ($vars['plugin_id'] == 'system_branding_block') {
// Make changes to the the system branding block
}
}
Як згадував Алекс, у Drupal 7 вам доведеться дотримуватися HOOK_preprocess_block та ідентифікатор:
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)
працює, ні робить MYTHEME_preprocess_block__page_title_block(&$variables)
.
mytheme_preprocess_block__{my_block_machine_name}(&$variables)
працює на D8.3