Предложения шаблонов Twig

Главные вкладки

Аватар пользователя Лала Лала 16 февраля 2020 в 18:32

Здравствуйте.

Предложения шаблонов Twig по умолчанию, если я правильно поняла, должны выводиться примерно в таком виде:

<!-- THEME DEBUG -->
<!-- THEME HOOK: 'node' -->
<!-- FILE NAME SUGGESTIONS:
   * node--view--frontpage--page-1.html.twig
   * node--view--frontpage.html.twig
   * node--1--teaser.html.twig
   * node--1.html.twig
   * node--article--teaser.html.twig
   * node--article.html.twig
   * node--teaser.html.twig
   x node.html.twig

Мне нужен шаблон анонса материала, т. к. в этом шаблоне будут отличия от вывода полного материала. В моём предложении этого шаблона нет. Выводится предложение только для полного отображения:

<!-- THEME DEBUG -->
<!-- THEME HOOK: 'node' -->
<!-- FILE NAME SUGGESTIONS:
   * node--41--full.html.twig
   * node--41.html.twig
   * node--article.html.twig
   * node--article--full.html.twig
   x node.html.twig

Попыталась создать файл node--article--teaser.html.twig, но он не подхватился. По прежнему работает x node.html.twig (кеш сбрасывала).

Лучший ответ

Аватар пользователя marassa marassa 17 февраля 2020 в 16:23
Мне нужно вывести этот материал в виде анонса через представление

Это самостоятельная задача №1.

Но twig-шаблон для вывода анонса должен быть другой.

Это самостоятельная задача №2. Не нужно начинать ее решать пока не решена задача №1.

1. Настройки представления покажете? Там действительно всё как тут?

2. Ваши предложения шаблонов точно взяты именно со страницы Вашего представления?
Сначала нужно добиться корректного отображения тизеров на странице представления, а уж потом заниматься темизацией тизеров через twig.

Комментарии

Аватар пользователя Reisor Reisor 17 февраля 2020 в 0:15

Да Вы включите просмотр материала в виде анонсов (тизеров)
Структура -> Типы материалов -> "Название Вашего материала" -> Управление отображением -> листайте вниз и отмечаете нужные режимы просмотра материала.

Аватар пользователя Лала Лала 17 февраля 2020 в 14:40

Полный включила. Всё равно не предлагает шаблон для анонса. Почему не подхватывет шаблон node--article--teaser.html.twig? В наименовании ошибки нет.

Аватар пользователя marassa marassa 17 февраля 2020 в 15:59

Лала wrote:
Выводится полное содержание: вижу по полям А как вывести анонс?

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

Аватар пользователя Лала Лала 17 февраля 2020 в 16:11

Исходя из ваших уточняющих вопросов, поняла что чего-то недопонимаю. Проще говоря, где-то я туплю. Это я умею. Но я в процессе освоения D8, так-что, не обессудьте.
Попытаюсь объяснить.
У меня есть тип материала с определённым набором полей. Мне нужно вывести этот материал в виде анонса через представление. Но twig-шаблон для вывода анонса должен быть другой. По соглашению имён в D8 название шаблона для тизера должно быть именно таким, как я его указала. Но он не подхватывается.

Аватар пользователя marassa marassa 17 февраля 2020 в 16:23
Мне нужно вывести этот материал в виде анонса через представление

Это самостоятельная задача №1.

Но twig-шаблон для вывода анонса должен быть другой.

Это самостоятельная задача №2. Не нужно начинать ее решать пока не решена задача №1.

1. Настройки представления покажете? Там действительно всё как тут?

2. Ваши предложения шаблонов точно взяты именно со страницы Вашего представления?
Сначала нужно добиться корректного отображения тизеров на странице представления, а уж потом заниматься темизацией тизеров через twig.

Аватар пользователя marassa marassa 17 февраля 2020 в 16:24

Лала wrote:
Нет я сначала хотела исправить шаблон, а потом создавать представление.

Это неправильная (и невозможная) последовательность действий. Перечитайте мой пост, я там внёс кое-какие правки для ясности.

Аватар пользователя Лала Лала 17 февраля 2020 в 16:28

Каким образом это может быть связано (создание представления и предложение шаблона ). Я создаю шаблон не для вывода страницы с представлением, а для вывода тизера самого типа материала.

Аватар пользователя ivnish ivnish 17 февраля 2020 в 16:42
1

Потому что шаблон тизера будет задействован только в случае вывода тизера. А тизер материалов должен выводиться в вашем представлении, которое вы решили создать в последнюю очередь.

Аватар пользователя marassa marassa 17 февраля 2020 в 16:43
1

Лала wrote:
Каким образом это может быть связано (создание представления и предложение шаблона ).

Шаблон предлагается только и именно на той странице, где выводится нужный материал в нужном вью-моде. Пока у вас на сайте нет ни одной страницы, на которой выводится тизер, вы никак не сможете его ни увидеть, ни отладить.
Лала wrote:
Я создаю шаблон не для вывода страницы с представлением

Тогда зачем его вообще создавать? Единственная страница на вашем сайте, где этот шаблон будет подхватываться, это страница представления.
Лала wrote:
а для вывода тизера самого типа материала.

Для вывода тизера где? Единственная страница на вашем сайте, где этот тизер будет показываться, это страница представления.

Аватар пользователя Лала Лала 17 февраля 2020 в 16:39

Если вы не против, я напишу ссылку на руководство, которое я пытаюсь применить. Как я поняла шаг с созданием шаблона выполняется прежде создания представления. Но возможно я не правильно истолковала этот момент: Создать галерею

Аватар пользователя marassa marassa 17 февраля 2020 в 17:01
1

В руководстве ничего не говорится о том, что сразу после создания шаблона можно отправиться на первую попавшуюся страницу сайта и искать там этот шаблон Wink
Создавать-то можно в любом порядке, но правильнее всего построить процесс так, чтобы после каждого шага можно было посмотреть что получилось и убедиться, что получилось правильно. Не вижу смысла создавать кастомный шаблон на этапе, когда еще невозможно сразу посмотреть что получилось.

Аватар пользователя Лала Лала 17 февраля 2020 в 17:06

Да, поняла эту ошибку. Создала шаблон. Всё остальное тоже сделала. Но именно эта страница открывается с ошибкой. Остальное работает.

Twig\Error\SyntaxError: Unknown " set image " tag. in Twig\Parser->subparse() (line 1 of themes\custom\mytheme\templates\content\node--imga-portfolio-front--teaser.html.twig).

Аватар пользователя Лала Лала 17 февраля 2020 в 17:13
{% set image = {
  '#theme':      'image_style',
  '#style_name': node.field_img_portfolio_style.value,
  '#uri':        node.field_img_portfolio[0].entity.uri.value,
  '#alt':        node.field_img_portfolio[0].alt,
} %}
{{ image }}

Здесь:

field_img_portfolio_style - это моё поле для стилей изображения. (Тип поля: Список(Текст))

field_img_portfolio - моё поле для изображения

Аватар пользователя marassa marassa 17 февраля 2020 в 20:39
1

Сдаюсь. Навскидку всё корректно. Я бы посмотрел не затесались ли вместо пробелов какие-нибудь левые символы при копировании с веб-страницы. И попробовал бы поменять название переменной image на какое-нибудь другое - вдруг конфликтует с чем-то, хотя не понимаю с чем...

Аватар пользователя Лала Лала 23 февраля 2020 в 14:39

1.) На первом экране неправильно поставила класс строки. Исправляю:

2.) Содержимое в шаблон тизера копировала с сайта, затем вводила вручную, на результат не влияет.
Пробовала менять название переменной.
Ошибка осталась прежней: "Twig \ Error \ SyntaxError: Неизвестный тег". Указывает на переменную в шаблоне.
Отложу пока эту тему.

Аватар пользователя ant4 ant4 23 февраля 2020 в 14:58

Лала wrote:
Да, поняла эту ошибку. Создала шаблон. Всё остальное тоже сделала. Но именно эта страница открывается с ошибкой. Остальное работает.
Twig\Error\SyntaxError: Unknown ' set image ' tag. in Twig\Parser-&gt;subparse() (line 1 of themes\custom\mytheme\templates\content\node--imga-portfolio-front--teaser.html.twig).

С именем шаблона не ошиблись?

Аватар пользователя Лала Лала 23 февраля 2020 в 22:01

Нет, не ошиблась. Если вставляю в него код из node.html.twig - работает (обозначен как основной шаблон). Если вставляю код для изображения - ошибка.

Аватар пользователя Reisor Reisor 17 февраля 2020 в 18:53
1

Я начал изучать D8 вообще не зная ничего, и по мне так Вы усложняете.
Проще как Вам сказали создать представление и там выводить тизеры (анонсы), можно полями, можно содержимым.
Если полями то добавляете поля которые требуются.
Если содержимым - то в типе материала редактируете какие поля требуются.
Ну и темизировать потом.
P.S. Сам шаблон twig я не трогал вообще, за исключением того что добавлял пару div'ов, и Вам того же советую, так проще мне кажется.

Аватар пользователя Лала Лала 17 февраля 2020 в 19:57

Да. Для меня ещё много непонятного. Тем более когда практически всё с нуля.
Если что-то не получается откладываю. Потом возвращаюсь, когда уже не кажется таким сложным.