$ is_front недоступен во всех шаблонах

Насколько я знаю, $ is_front - это глобальная переменная шаблона в Drupal 7, и поэтому переменная доступна во всех шаблонах.

Теперь для Drupal 8 кажется, что это уже не так. Я попытался вызвать $is_front в page-title.html.twig и понял, что $is_front здесь не было.

Использование template_preprocess_page_title(&$variables) Я мог бы добавить $is_front к шаблону.

* Почему Drupal 8 не предоставляет $is_front в том же стиле, что и Drupal 7? И как было бы проверять главную страницу в шаблоне, где $is_front недоступен? **

Также кажется, что drupal_is_front_page () больше не доступен.

Должен ли я выглядеть следующим образом:

  try {
$variables['is_front'] = \Drupal::service('path.matcher')->isFrontPage();


 }

      catch (Exception $e) {
        // If the database is not yet available, set default values for these
        // variables.
        $variables['is_front'] = FALSE;
        $variables['db_is_active'] = FALSE;
      }

(взято из template_preprocess_page )

4 голоса | спросил Stefan Korn 25 32015vEurope/Moscow11bEurope/MoscowWed, 25 Nov 2015 16:09:50 +0300 2015, 16:09:50

1 ответ


9

Вы почти ответили на вопрос самостоятельно, вы можете добавить переменную ко всем шаблонам с помощью этого кода:

function theme_preprocess(&$variables, $hook) {
  try {
    $variables['is_front'] = \Drupal::service('path.matcher')->isFrontPage();
  }
  catch (Exception $e) {
    $variables['is_front'] = FALSE;
  }
  // Ensure the cache varies correctly (new in Drupal 8.3).
  $variables['#cache']['contexts'][] = 'url.path.is_front';
}

По соображениям производительности вы можете сделать условие на $ hook только для добавления переменной в нужные вам шаблоны и избежать того, чтобы код дважды запускался для страницы.

Edit:

Новое в Drupal 8.3: Контекст кэша для определения Front Page

ответил 4k4 26 42015vEurope/Moscow11bEurope/MoscowThu, 26 Nov 2015 14:10:34 +0300 2015, 14:10:34

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132