Получить имя сайта в пользовательском шаблоне


7

Я хочу напечатать название сайта в пользовательском шаблоне ( page--front.html.twig)

{{ site_name }} не работает.

Если я использую, {{ page['#title'] }}я получаю только «Welcome to [site_name]».

Я ищу способ только напечатать имя_сайта. Кто-нибудь знает, как этого добиться?

Спасибо!

Ответы:


11

Добавьте это в YOUR_THEME.themeфайл:

function YOUR_THEME_preprocess_page(&$variables) {
  $variables['site_name'] = \Drupal::config('system.site')->get('name');
}

И тогда это в вашем page--front.html.twigшаблоне:

{{ site_name }}

6

Некоторые вещи изменились с Drupal 7 на Drupal 8. Одна из вещей, которые изменились, это то, что это действительно хорошая идея - использовать блоки вместо выборки и рендеринга этих вещей самостоятельно. Основная причина - кеширование.

Что вы, вероятно, хотите сделать, это разместить блок брендинга сайта где-нибудь на странице (может отображать название сайта, логотип и / или слоган). Многие вещи, которые были закодированы в темах, теперь являются блоками.

Для этого было приложено много усилий, так как это делает возможным кэширование и огромный прирост производительности, что было достигнуто в Drupal 8.

Если вы действительно хотите сделать это способом Drupal 7, ответ @ Aram покажет вам, как это сделать с помощью препроцессора.


Очень интересно. Спасибо! Я нашел способ реализовать блок в шаблоне * .twig, используя следующий фрагмент: {% include 'themes / bootstrap / templates / block - system-branding-block.html.twig'%}. Это нормально или вы бы порекомендовали другой подход?
Стефан

@Phil Я бы порекомендовал вам сделать регион в вашей теме, а также настроить и разместить блок. При необходимости можно создать собственный шаблон для изменения сгенерированной разметки, в большинстве случаев это не нужно.
googletorp

1

Да, в D8 twig templateфайлах вы не можете написать код для извлечения данных.

Если вам нужны какие-либо данные, вам нужно установить переменные в preprocessфункции и использовать их.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.