Как сменить title через hook темы?

Главные вкладки

Аватар пользователя pingvin156 pingvin156 30 марта 2019 в 16:11

В файле активной темы MyTheme.theme прописал

function MyTheme_preprocess_page_title(&$variables) {
$variables['title'] = 'TEST';
}

Почему может не работать, подскажите? Как будто hook просто не срабатывает.

Комментарии

Аватар пользователя Semantics Semantics 30 марта 2019 в 18:16

и тем не менее,
а. Нужно убедиться вызывается ли хук, хоть var_dump() туда вставить.
б. Убедиться есть ли вообще переменная, которую вы путаетесь модифицировать.
в. Скорее всего, вам нужен хук hook_preprocess_page()

Аватар пользователя sas@drupal.org sas@drupal.org 30 марта 2019 в 18:26

Например core/themes/bartik/bartik.theme

function bartik_preprocess_page_title(&$variables) {

  // Since the title and the shortcut link are both block level elements,
  // positioning them next to each other is much simpler with a wrapper div.
  if (!empty($variables['title_suffix']['add_or_remove_shortcut']) && $variables['title']) {

    // Add a wrapper div using the title_prefix and title_suffix render
    // elements.
    $variables['title_prefix']['shortcut_wrapper'] = [
      '#markup' => '<div class="shortcut-wrapper clearfix">',
      '#weight' => 100,
    ];
    $variables['title_suffix']['shortcut_wrapper'] = [
      '#markup' => '</div>',
      '#weight' => -99,
    ];

    // Make sure the shortcut link is the first item in title_suffix.
    $variables['title_suffix']['add_or_remove_shortcut']['#weight'] = -100;
  }
}

Аватар пользователя Orion76 Orion76 30 марта 2019 в 20:09

Хорошей и поэтому общепринятой практикой в программировании и не только, является разделение "функционала" :

- вывода-оформления контента и
- "формирование" контента.

Как раз для этого в drupal, тема оформления реализована отдельным "модулем" системы.

Тема оформления только для "темизации" и "оформления" контента.
Логично?
В предыдущем комменте как раз нагляднейший пример..

Для работы с контентом - модуль.

Если уж Вы разобрались с хуками-препроцессорами темы оформления, для Вас не будет большой сложностью для работы с самим контентом добавить "самодельный" модуль.

Если Вы не забыли после добавления-изменения препроцесс-хука сбрасывать кэш, и хук всеравно не работает,
с вероятностью процентов в 80%, Вы уже где-то в хуках темы "вмешались" в процесс формирования контента.

И скорее всего из-за этого и проблема.

Аватар пользователя Anatolii1309 Anatolii1309 30 марта 2019 в 22:15

Регистр важен. В том числе не может быть знака -

function yourthemename_preprocess_page(&$variables) {
$variables['title'] = 'TEST';
}
НЕ збываем чистить кэш, пайдж кэшируется