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

时间:2018-06-22 09:32:22

标签: php drupal twig theming

我一直在尝试找出如何使用实体引用提取节点内容类型的网址。

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>

1 个答案:

答案 0 :(得分:2)

这对我有用:

<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\node\Entity\Node::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 %}