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

Templates 如何检查当前页面是否是node.html.twig的首页?,templates,variables,twig,drupal-8,frontpage,Templates,Variables,Twig,Drupal 8,Frontpage,我目前正在尝试将一个网站与Drupal8集成。我的首页与其他页面略有不同,如果当前页面是要添加“div”的首页,我需要签入node.html.twig。变量“is_front”在page.html.twig上运行良好,但在node.html.twig上似乎不可用。如何解决此问题?如果要在首页中显示节点,并且该节点的外观应与实际的节点页面相同,则可以为该节点创建一个新的显示,如“在Frontpage上”。对于该显示,您将创建一个新的节点模板(请注意对细枝文件使用正确的命名约定,否则它将不起作用)。

我目前正在尝试将一个网站与Drupal8集成。我的首页与其他页面略有不同,如果当前页面是要添加“div”的首页,我需要签入node.html.twig。变量“is_front”在page.html.twig上运行良好,但在node.html.twig上似乎不可用。如何解决此问题?

如果要在首页中显示节点,并且该节点的外观应与实际的节点页面相同,则可以为该节点创建一个新的显示,如“在Frontpage上”。对于该显示,您将创建一个新的节点模板(请注意对细枝文件使用正确的命名约定,否则它将不起作用)。然后告诉首页使用“On Frontpage”显示来显示节点,这将使用不同的模板(包括所需的div)

细枝模板命名约定:

因此,步骤如下:

  • 为节点创建新的显示模式
  • 为该特定显示模式创建新模板
  • 告诉frontpage使用该显示器显示节点

  • 如果希望在首页中显示节点,并且该节点看起来应该与实际的节点页面一样,则可以为该节点创建一个新的显示,如“在Frontpage上”。对于该显示,您将创建一个新的节点模板(请注意对细枝文件使用正确的命名约定,否则它将不起作用)。然后告诉首页使用“On Frontpage”显示来显示节点,这将使用不同的模板(包括所需的div)

    细枝模板命名约定:

    因此,步骤如下:

  • 为节点创建新的显示模式
  • 为该特定显示模式创建新模板
  • 告诉frontpage使用该显示器显示节点

  • 还可以使用预处理挂钩添加此变量。下面的代码将添加
    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();
    }
    
    然后在细枝模板内,您可以检查变量,如下所示:

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

    还可以使用预处理挂钩添加此变量。下面的代码将添加
    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();
    }
    
    然后在细枝模板内,您可以检查变量,如下所示:

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

    节点是内容。头版是一页。如果您在某个节点上,则不能同时出现在头版。你能进一步解释一下你到底想做什么吗?也许我没有理解正确。一个节点就是内容。头版是一页。如果您在某个节点上,则不能同时出现在头版。你能进一步解释一下你到底想做什么吗?也许我没听懂。非常感谢你的回答。如何设置在特定情况下要使用的显示模式?非常感谢您的回答。如何设置在特定情况下要使用的显示模式?