如何检查当前页面是否是 node.html.twig 的首页?

How do I check if the current page is the front page from node.html.twig?

我目前正在尝试将网站与 Drupal 8 集成。我的首页与其他页面略有不同,如果当前页面是首页,我需要签入 node.html.twig添加一个"div"。变量 "is_front" 在 page.html.twig 上工作正常,但在 node.html.twig 上似乎不可用。我该如何解决这个问题?

如果你想在首页中显示一个节点,并且它看起来就像实际的节点页面,你可以为该节点创建一个新的显示,如"On Frontpage"。对于该显示,您创建一个新的节点模板(小心使用正确的树枝文件命名约定,否则它将不起作用)。然后你告诉首页使用 "On Frontpage" 显示来显示节点,这将使用不同的模板(包括你想要的 div)。

Twig 模板命名约定:https://www.drupal.org/node/2354645

所以步骤:

  1. 为您的节点创建新的显示模式
  2. 为该特定显示模式创建新模板
  3. 告诉首页使用那个显示器显示节点

您还可以使用预处理挂钩添加此变量。以下代码将添加 is_front 变量,以便它可以在 html.html.twig 模板中使用:

// Adds the is_front variable to html.html.twig template.
function mytheme_preprocess_html(&$variables) {
  $variables['is_front'] = \Drupal::service('path.matcher')->isFrontPage();
}

然后在 twig 模板中,您可以像这样检查变量:

{% if is_front %}
THIS IS THE FRONTPAGE
{% endif %}