Рейтинг:2

Добавить пользовательскую переменную в существующий блок

флаг mx
JFK

Есть ли способ изменить массив рендеринга существующего блока? Я хочу сделать это для блока коммерции (блок корзины), но остается вопрос для любого блока ядра или модуля contrib.

Когда блок использует пользовательскую тему #theme для своего блока, есть ли способ изменить определение?

Допустим, модуль определяет следующую тему:

/**
 * Реализует hook_theme().
 */
функция commerce_cart_theme ($ существующая, $ тип, $ тема, $ путь) {
  возвращаться [
    'commerce_cart_block' => [
      'переменные' => [
        'значок' => NULL,
        'счетчик' => NULL,
        'count_text' => '',
        'контент' => NULL,
        'URL' => ПУСТО,
        'ссылки' => [],
      ],
    ],
  ];
}

и блок использует '#theme' => 'commerce_cart_block' поскольку он создает массив рендеринга.

Я хотел бы знать, есть ли способ добавить новую пользовательскую переменную в commerce_cart_block где-нибудь в хуке.

Я попытался переписать commerce-cart-block.html.twig в своей теме и добавить в него новую переменную, и я установил свою переменную в THEME_preprocess_block__commerce_cart(), но это не работает.

я тоже пытался изменить содержимое блока с помощью HOOK_block_view_alter в модуле, но тоже не получилось.

Рейтинг:2
флаг ua

Вы можете сделать это с hook_preprocess_HOOK и все заглавные буквы КРЮК часть относится к ключу массива в крючок_тема().

/**
 * Реализует hook_preprocess_HOOK().
 */
функция mytheme_preprocess_commerce_cart_block(&$variables) {
  // Добавляет пользовательскую переменную
  $variables['hello_world'] = 'Привет, мир';
}

Кстати, этот хук можно использовать либо в пользовательской теме, либо в пользовательском модуле.

И в коммерция-корзина-block.html.twig

{{ Привет, мир }}

должен напечатать «Hello World».

флаг mx
JFK
Работает отлично! Спасибо

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.