在自定义模板中获取网站名称


7

我想在自定义模板(page--front.html.twig)中打印网站名称

{{ site_name }} 不起作用。

如果使用,{{ page['#title'] }}我只会收到“欢迎使用[site_name]”。

我正在寻找一种仅打印site_name的方法。有谁知道如何实现这一目标?

谢谢!

Answers:


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'%}。这样可以吗?还是您会建议另一种方法?
Stefan

@Phil我建议您在主题中创建一个区域,然后配置并放置该块。如果需要创建一个自定义模板来更改所生成的标记,则大多数时候都是不必要的。
googletorp

1

是的,在D8 twig template文件中,您无法编写代码来获取数据。

如果需要任何数据,则需要在preprocess函数中设置变量并使用它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.