如何在特定的 Drupal 页面中添加静态内容,例如使用 {% if is_front %} {% endif %} 将其添加到主页中

问题描述

我是 drupal 的新手,我尝试在 html.html.twig 页面添加一个简单的静态图像。 为了仅在主页中显示此图像,我添加了此条件

{% if is_front %}
  {% endif %}

在另一个特定页面示例中添加它的条件是什么/contact/

我在页面内尝试了这段代码,但它不起作用,我应该用一些代码包装它吗?

if(drupal_valid_path('contacts') == 1) //this exists
{
    print_r('Exists!');
}

请帮忙!非常感谢。

解决方法

您的问题是将树枝与 drupal 7 功能混合在一起。我想反正你是在 D8/D9。

我还假设“联系人”页面是一个节点。如果是别的东西 - 例如查看页面 - 您可能需要检查路由,而不是检查节点。

有多种方法,两种可能是:

  • 一个钩子预处理,如果存在则加载节点
function hook_preprocess_html(&$variables) {

$node = \Drupal::routeMatch()->getParameter('node');
if ($node instanceof \Drupal\node\NodeInterface) {
$variables['node'] = $node;
}
}

在树枝中检查节点的id是否正确

  • 覆盖特定节点的 html.html.twig,例如html--node--10.html.twig。在这种情况下,我建议不要复制基础 html.html.twig 的所有内容,而是使用 embed 标记仅覆盖适当的块。