【问题标题】:How do I check if the current page is the front page from node.html.twig?如何检查当前页面是否是 node.html.twig 的首页?
【发布时间】:2016-04-28 09:49:41
【问题描述】:

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

【问题讨论】:

  • 一个节点是content。首页是一个page。如果你在一个节点上,你不能同时在首页。你能进一步解释你到底想要做什么吗?可能我没有理解正确。

标签: templates variables twig drupal-8 frontpage


【解决方案1】:

您也可以使用预处理钩子添加此变量。以下代码将添加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 %}

【讨论】:

    【解决方案2】:

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

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

    那么步骤:

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

    【讨论】:

    • 非常感谢您的回答。如何设置我想在特定情况下使用的显示模式?
    猜你喜欢
    • 2015-05-10
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-09
    • 1970-01-01
    相关资源
    最近更新 更多