Рейтинг:1

Как изменить порядок тела узла и полей ссылок в моей подтеме Bartik?

флаг in

У меня есть простая подтема стандартной темы Bartik в Drupal 9.3.0. По умолчанию, когда узел визуализируется, его ссылки, напр. "читать дальше", "войти", стоять перед тело.

Например,

<div class="node__content clearfix">
  <div class="node__links">
    <ul class="links inline">
      <li class="node-readmore"><a href="/node/11" rel="tag" >Read more</a></li>
      <li class="comment-forbidden"><a href="/login?destination=/comment/reply/node/11/comment_node_story%23comment-form">Log in</a> to post comments</li>
    </ul>
  </div>
  <div class="clearfix text-formatted field field--name-body ...">
    <p>Body teaser ...</p>
  </div>
</div>

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

узел.html.twig содержит:

<div{{ content_attributes.addClass('node__content', 'clearfix') }}>
  {{ content }}
</div>

что предполагает, что {{ содержание }} состоит из ссылки и тело. Однако я не могу понять, где происходит его рендеринг.

Может кто-то указать мне верное направление?

leymannx avatar
флаг ne
Почему бы вам не использовать для этого настройки отображения типа узла? Есть целый пользовательский интерфейс и множество средств форматирования, чтобы делать то, что вы хотите, без необходимости что-либо кодировать. Вы также можете использовать модуль «Группа полей», если считаете необходимым добавить дополнительные оболочки вокруг какой-либо группы полей.
флаг in
@leymannx Я не уверен, почему я выбрал решение для подтемы - возможно, потому, что я все равно подбирал подтему для другой проблемы. В любом случае, я пошел и обновил пользовательские настройки отображения и перетащил «ссылки» под «тело», сохранил эти настройки, вернул мою подтему для использования «{{ content }}», очистил все свои кеши, обновил страницу и ... `ссылки` отображаются _над_ телом. Я не уверен, что я делаю неправильно, однако я не получаю ожидаемого результата. Вы правы, хотя, это способ сделать это, т.е. используйте пользовательский интерфейс, а не код (если бы я мог просто заставить его работать).
флаг in
Я также попытался использовать тему Bartik, а не свою подтему, и получил тот же результат, т.е. `ссылки`, затем `тело`.
leymannx avatar
флаг ne
Нет ничего плохого в подтемах. Гораздо проще применить пользовательский CSS/JS с собственной подтемой. Просто с тем, что вы сейчас делаете в шаблонах, вы побеждаете пользовательский интерфейс, настройки отображения, которые позволяют делать то, что вы хотите, парой кликов.
leymannx avatar
флаг ne
Выполнение этого в `node.html.twig` применимо ко всем типам узлов. Копирование `node.html.twig` в `node--my-type.html.twig`, очистка кеша и настройка применимы только к типу узла "Мой тип".
Рейтинг:2
флаг ua
{{ содержание }}

содержит все, вы можете быть более точным и заменить его, например:

{{ контент.название }} 
{{ содержимое.тело }}
{{ content.field_name }}
{{ контент.ссылки }}
Рейтинг:1
флаг ne

Просто перейдите в раздел «Структура» > «Типы контента» > «Мой тип контента» > «Управление отображением».

https://example.com/admin/structure/types/manage/page/display.

Скриншот полевого интерфейса Drupal

Там вы переупорядочиваете поля, отображаемые в вашей теме внешнего интерфейса по умолчанию, с помощью нескольких кликов, экспорт конфиг, готово. Для развертывания git push экспортированные файлы конфигурации, на prod git тянуть это снова и сейчас импорт конфиг, готово.

Вы также можете использовать Группа полей модуль, если вы чувствуете необходимость добавить дополнительные оболочки вокруг любой группы полей через пользовательский интерфейс.

Создавая все шаблоны, вы побеждаете пользовательский интерфейс Field, в то время как настройки отображения всегда являются первым местом, где любой будущий сопровождающий этого сайта будет искать, почему что-то выглядит странно, или просто хочет изменить средство форматирования, а затем может задаться вопросом, почему это не имеет никакого эффекта. «Черт, мне нужно просмотреть шаблоны сейчас и закодировать то, что можно было бы изменить одним щелчком мыши».

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

флаг in
Спасибо за подробный ответ. Я нашел конфигурацию «управление отображением», которую вы выделили. Что я пропустил в первый раз, так это разные вкладки для «По умолчанию», «RSS» и «Тизер». О! Как только я переупорядочил поля на _всех_ вкладках, отображение соответствовало тому, что мне было нужно.
leymannx avatar
флаг ne
@dave ‒ Эти вкладки «По умолчанию» и т. д. представляют **режимы просмотра**. При посещении одного термина, например https://example.com/taxonomy/term/3, термин будет отображаться в режиме просмотра «По умолчанию» (или иногда называемом «Полный»). В других местах (например, когда вы создаете страницу «Представления» со списком терминов таксономии) они могут отображаться в режиме просмотра «Тизер», отображающем только подмножество полей. То же самое относится и к типам узлов. На этой странице https://example.com/taxonomy/term/3 по умолчанию все узлы, помеченные этим термином, отображаются в режиме просмотра «Тизер», отображая только заголовок и обрезанное тело узлов.
Рейтинг:0
флаг pw

В вашем шаблоне узла скажите «node--article.html.twig», вы можете изменить порядок ссылок и тела следующим образом.

<div{{ content_attributes.addClass('content') }}>
{{ содержимое.тело }} 
{{ контент.ссылки }} 

введите описание изображения здесь

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.