Я пытался выяснить, как я могу получить URL-адрес типа содержимого узла, используя ссылку на сущность.
Видимо используя {{ 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\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 %}
Других решений пока нет …