Темизация в Drupal 9

Аватар пользователя Archangelus Archangelus 20 декабря 2021 в 20:57

Приветствую всех. Пытаюсь тут сайт на 9 друпале сверстать и вот такая проблемка вылезла. Пытаюсь сделать слайдер. Есть блок с двумя полями body (текст всякий) и field_in_slide_img (картинка слайда). Кое как порыскав в инете и методом научного тыка сумел найти как обозвать файл темизации. Внутри прописал
{% block content %}
{{ content }}
{% endblock %}
И всё норм выводит, но мне надо каждое поле отдельно вывести. Пытался вывести вот так
{% block content %}
{{ content.body }}
{{ content.field_in_slide_img }}
{% endblock %}
Но нифига не работает. Может кто сказать дураку как правильно поля по отдельности выводить? Smile

Лучший ответ

Аватар пользователя Archangelus Archangelus 22 декабря 2021 в 13:14

Всё, всем спасибо за помощь (с модулем и перезаписью результатов всё получилось), как обычно, долбился в закрытую дверь башкой, а ключ то перед носом валялся Smile

Комментарии

Аватар пользователя ivnish ivnish 20 декабря 2021 в 21:34

Всё зависит от того, что за слайдер и как он сделан. Какое имя шаблона у вас?

Аватар пользователя Archangelus Archangelus 20 декабря 2021 в 21:51

Ну я использую owlcarousel. Он вроде как слайдит всё что выводит блок. Создал файл block--slayder-na-glavnoy.html.twig чтобы темизировать блок. А имя шаблона чего? Сайта? Если сайта то я свой собственный ковыряю, пытаюсь так сказать шаблон с нуля сделать. Просто мне нужно понять как выводить поля по отдельности. Пытаюсь вывести как написал, он ничего вообще не выводит. Последний раз я на 6 друпале сайт делал, а в 9 вообще всё по другому Smile

Аватар пользователя ivnish ivnish 20 декабря 2021 в 21:57

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

Посмотрите какие есть шаблоны в модуле owncarousel

Аватар пользователя Archangelus Archangelus 20 декабря 2021 в 22:14

Отбросим сейчас карусель Smile Я так понимаю я не правильно обозвал файл? Я вот честно в инете искал тоже нифига так и не понял как правильно обзывать файлы в 9 друпале, раньше в самом views видно было. Вот у меня есть Представление типа блок с машинным именем slayder_na_glavnoy, если залезть в редактирование его то там в Расширенных есть ещё одно машинное имя in_slider_block. Как тогда правильно его обозвать, есть вообще мануал по этому на 9 друпал? У меня уже мозг кипит Smile

Аватар пользователя Archangelus Archangelus 20 декабря 2021 в 23:00

Вот с этим большое спасибо. Осталось теперь понять как поля выводить. Мнеб хотябы чей-нибудь файл где поля по отдельности выводятся для примера Smile

Аватар пользователя Лала Лала 21 декабря 2021 в 0:02

Включаете дебаг.
Ищите нужное название.
Например:

<!-- FILE NAME SUGGESTIONS:
   * block--breadcrumb.html.twig
   * block--system-breadcrumb-block.html.twig
   * block--system.html.twig
   x block.html.twig
-->

Крестиком обозначен действующий шаблон, звёздочкой - шаблоны для выбора.

Копируете шаблон, переименовываете.

Идёте в Управление полями материала и смотрите Машинное имя поля.
Вывод поля:

{{ content.field_name }}

Вносите свои изменения.

Если всё правильно, название вашего нового шаблона будет обозначено крестиком.

Аватар пользователя ivnish ivnish 21 декабря 2021 в 7:21

Надо не страдать, а читать документацию и смотреть примеры других шаблонов Smile

Аватар пользователя marassa marassa 21 декабря 2021 в 7:33

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

Аватар пользователя Archangelus Archangelus 21 декабря 2021 в 12:48

Да пофиг уже на слайдер, я просто именно с него начал. Перешёл на обычный блок и нифига не могу вывести поля по отдельности.
{% block content %}
{% if content %}
{{ content }}
{% endif %}
{% endblock %} Выводит данные.

{% block content %}
{% if content %}
{{ content.body }}
{{ content.field_in_slide_img }}
{% endif %}
{% endblock %} Нифига ничё не выводит.

Может ещё чё надо прописывать при этом, ничерта найти не могу. Фиговый из меня поисковик.

Аватар пользователя Archangelus Archangelus 22 декабря 2021 в 0:09

Я не понимаю что я делаю не так. Почему {{ content }} выводит оба поля, а {{ content.body }} и {{ content.field_in_slide_img }} ничего не выводят. Может имена полей совсем не эти (хотя других я и не создавал ещё). Есть возможность отобразить имена выводимых полей в данном блоке? В друпал 6 помню был какой-то код который выдавал имена выводимых полей, а есть ли в 9 такое? Возможно как обычно бывает допускаю мелкую ошибку, а в упор её не вижу и ищу не там.

Аватар пользователя ant4 ant4 22 декабря 2021 в 8:11

Вам нужно определиться с именем шаблона, для этого изучайте документашку.
Конструкция {{ content.body }} точно должна работать для шаблонов node (например node.html.twig) или taxonomy-term (например taxonomy-term.html.twig) (при наличии поля body).
Думаю в Вашем случае имя шаблона должно быть более конкретное, например node--[content-type]--[viewmode].html.twig
Список имеющихся полей можно посмотреть по адресу /admin/reports/fields

Аватар пользователя marassa marassa 22 декабря 2021 в 8:02

Archangelus wrote: Есть блок с двумя полями

А что такое "блок с полями"? Каким образом он создан? Про поля сущностей/нод знаю, а про "блоки с полями" не слышал...

Аватар пользователя Archangelus Archangelus 22 декабря 2021 в 11:28

Да это я так просто обозвал. Яж чайник :). Последний раз делал сайтик на 6 друпале, уже нифига ничё не помню. Ща распишу чё я пытаюсь сделать.

Аватар пользователя Archangelus Archangelus 22 декабря 2021 в 11:45


Короче. Создал я тип материала. В нём только картинка и текст. Создал блок выводящий 3 уже созданных материала с картинкой и текстом. Сделал чтоб вместо картинки её урл выводился. Теперь пытаюсь сделать так, чтобы можно было этот урл впихнуть в бэкграунд дива. Тоесть хочу чтобы грубо говоря каждый из трёх материалов выводился вот в таком виде.

<div style="background-image: url('урл картинки')">
Текст
</div>

Для этого мне надо вывести поля по отдельности. Но похоже я что-то делаю не так. Я уже просто запутался и начинаю тупить. Объясните дураку как правильно код в файле *.html.twig написать Smile Может я вывожу не правильно и надо кроме блока ещё что в представлении добавить.
Да и дальше же нужно будет умение вертеть полями как угодно.

Аватар пользователя marassa marassa 22 декабря 2021 в 11:51

Ключевое слово Views так и не прозвучало, только по скриншоту можно угадать Wink Теперь хоть что-то стало понятно.
Попробуйте в шаблоне вместо content.body использовать node.body или просто body.
Если всё равно не получится, можно (и будет правильнее) всё, что Вам хочется сделать через REWRITE RESULTS в настройках поля Views прямо в админке, и не нужно морочиться с правильным именем шаблона.

Аватар пользователя Archangelus Archangelus 22 декабря 2021 в 12:44

Большое спасибо, не знал что там такое есть, этож всё меняет Smile Жаль там вот такое не работает
<div style="background-image: url('{{ field_in_slide_img }}')"> стили он не ест Smile Попробую с указанным вами модулем.

Аватар пользователя Archangelus Archangelus 22 декабря 2021 в 13:14

Всё, всем спасибо за помощь (с модулем и перезаписью результатов всё получилось), как обычно, долбился в закрытую дверь башкой, а ключ то перед носом валялся Smile