如何检查当前页面是否是 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
所以步骤:
- 为您的节点创建新的显示模式
- 为该特定显示模式创建新模板
- 告诉首页使用那个显示器显示节点
您还可以使用预处理挂钩添加此变量。以下代码将添加 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 %}
我目前正在尝试将网站与 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
所以步骤:
- 为您的节点创建新的显示模式
- 为该特定显示模式创建新模板
- 告诉首页使用那个显示器显示节点
您还可以使用预处理挂钩添加此变量。以下代码将添加 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 %}