如何获取/打印实体引用的路径或URL到我的twig模板(Drupal 8)?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获取/打印实体引用的路径或URL到我的twig模板(Drupal 8)?相关的知识,希望对你有一定的参考价值。

我一直在试图弄清楚如何使用实体引用来提取节点内容类型的URL。

enter image description here

显然使用{{ links.entity.uri }}{{ links.entity.url }}不起作用

<div>

{% for links in node.field_related_items %}

    <h2>{{ links.entity.label }}</h2>
    <a href="{{ links.entity.uri }} " ></a>

{% endfor %}

</div>
答案

这对我有用:

<a href="{{ links.entity.id }}"></a>

这只会带你到/node/entity_id而不是/entity_name/entity_id

我想扩展这个答案,说你应该在你的Drupal::entityQuery()文件中添加一个.theme。在此查询内部,您将需要获取“别名”,该别名是内容的链接。在你的情况下,这将给你这些链接/migrations/aboutiom

这是一个可能看起来像什么的例子......

  function theme_name_preprocess_node(&$variables) {
    $query = Drupal::entityQuery('node')
                  ->condition('status', 1)
                  ->condition('type', 'related_links')
    $nids = $query->execute();
    $nodes =  Drupal
odeEntityNode::loadMultiple($nids);
    $related_links = [];
    foreach ($nodes as $item) {
      $alias = Drupal::service('path.alias_manager')->getAliasByPath('/node/'.$item->id());
      $related_links[] = [
        'title' => $item->getTitle(),
        'id' => $item->id(),
        'field' => $item->get('field_name')->value,
        'alias' => $alias,
      ];
    }
    $variables['related_links'] = $related_links;
  }

现在在你的树枝模板中你可以做这样的事......

{% for link in related_links %}
    <a href="{{ link['alias'] }}">{{ link['title'] }}</a>
{% endfor %}

以上是关于如何获取/打印实体引用的路径或URL到我的twig模板(Drupal 8)?的主要内容,如果未能解决你的问题,请参考以下文章

Symfony2 - 在 TWIG 模板中获取当前 URL 或路由?

在CLI中执行时,Symfony`url()`Twig函数如何确定绝对路径?

HttpServletRequest - 如何获取引用 URL?

通过相对路径获取Twig文件,然后将其包含在app文件夹中的base.html.twig中

检查实体字段类型是不是在 Twig 中返回值

从 Symfony2/Twig 中的 2 位国家代码获取翻译的国家名称?