Получить псевдоним узла в шаблоне


Я создаю о нас с базовым типом содержимого страницы и псевдонимом пути, присвоив ему псевдоним \about-us(nid=2), Теперь в файле шаблона я хочу получить псевдоним пути

<li><a href="{{  ??????? }}">{{ 'About Us'|t }}</a></li>

В Drupal 7 я получил его с помощью url("node/2"), но что эквивалентно в Drupal 8? какой фрагмент кода я должен использовать, чтобы получить псевдоним пути nid 2 в файле шаблона?

Author: No Sssweat, 2016-06-30

4 answers

Вы можете использовать path('entity.node.canonical', {'node': dd.nid}) в файле шаблона.

Разметка в файле шаблона будет выглядеть следующим образом.

<li><a href="{{path('entity.node.canonical', {'node': dd.nid})}}">{{ 'About Us'|t }}</a></li>

Я не пробовал, но это должно сработать.

 15
Author: Nitesh Sethia, 2017-12-29 12:57:57

В Резюме если вы хотите создать относительный URL-адрес используйте path и если вы хотите создать абсолютный URL-адрес используйте url таким образом, решение для этого вопроса является для относительных URL-адрес

 path('entity.node.canonical', {'node': node.nid}) 

И для абсолютного URL-адреса

 url('entity.node.canonical', {'node': node.nid}) 

Кроме того, я предоставил некоторые подробности о path, url и link функции, помогающие другим ребятам получить этот вопрос (как я получил свой через 1 год)

URL-адрес ($имя, $параметры, $параметры)

Создайте абсолютный URL-адрес с указанием имени маршрута и параметров:

<a href="{{ url('view.frontpage.page_1') }}">{{ 'View all content'|t }}</a>

Создайте абсолютный URL-адрес для текущего URL-адреса:

<a href="{{ url('<current>') }}">{{ 'Reload'|t }}</a>

Создайте абсолютный URL-адрес главной страницы:

<a href="{{ url('<front>') }}">{{ 'Home'|t }}</a>

Путь ($имя, $параметры, $параметры)

Генерирует [относительный] URL-адрес с указанием имени маршрута и параметров.

{# Link to frontpage view. #}
<a href="{{ path('view.frontpage.page_1') }}">{{ 'View all content'|t }}</a>

{# Link to user entity/profile page. #}
<a href="{{ path('entity.user.canonical', {'user': user.id}) }}">{{ 'View user profile'|t }}</a>

{# Link to node page. #}
<a href="{{ path('entity.node.canonical', {'node': node.id}) }}">{{ 'View node page'|t }}</a>

URL-адрес и функция пути определены почти параллельно найденным в \Symfony\Мост\Ветка\Расширение\Расширение маршрута.

Ссылка ($текст, $url, $атрибуты)

Эта вспомогательная функция принимает в качестве первого параметра текст, а в качестве второго параметра URL

Примеры:

{{ link(item.title, item.url, { 'class':['foo', 'bar', 'baz']} ) }}

Адрес_файла($uri)

Эта вспомогательная функция принимает относительный путь от корневого каталога и создает относительный путь URI к файлу.

{{ file_url(node.field_example_image.entity.uri.value) }}
 10
Author: Yuseferi, 2018-02-27 06:29:44

Мне не нравится вставлять идентификаторы узлов в шаблоны (это просто просит пользователя удалить узел и в конечном итоге воссоздать страницу с новым идентификатором узла).

Я сделал это, и, кажется, все в порядке:

<a href="{{ path('<front>') ~ 'some/path/here' }}">My Link</a>

Обратите внимание, что по умолчанию путь, возвращаемый /, будет /, поэтому вы не хотите, чтобы в добавляемом тексте была косая черта.

Кто-то более опытный, чем я, может вмешаться, если использовать фронт в качестве базового пути - плохая идея.

РЕДАКТИРОВАТЬ: Очевидно, я осознавая, что у этого подхода тоже есть проблемы (что, если какой-то пользователь изменит псевдоним страницы и разорвет ссылки в шаблоне?). Однако пользователям гораздо проще управлять псевдонимами, чем идентификаторами узлов. удалите узел, и простой смертный не сможет снова создать новый узел с тем же идентификатором. Испортите псевдоним, и обычный пользователь (редактор контента) может снова исправить его, не звоня разработчику.

 1
Author: Daniel Scott, 2017-03-24 01:46:25

Вам придется сделать это таким образом:

$path_alias = \Drupal::service('path.alias_manager')->getAliasByPath('/node/2');

Создайте эту переменную в файле шаблона и используйте эту переменную псевдонима пути везде, где вам нужен псевдоним узла.

Источник - https://www.drupal.org/node/1853148

 -3
Author: Nitesh Sethia, 2016-06-30 07:40:01