Приветствую всех. Пытаюсь тут сайт на 9 друпале сверстать и вот такая проблемка вылезла. Пытаюсь сделать слайдер. Есть блок с двумя полями body (текст всякий) и field_in_slide_img (картинка слайда). Кое как порыскав в инете и методом научного тыка сумел найти как обозвать файл темизации. Внутри прописал
{% block content %}
{{ content }}
{% endblock %}
И всё норм выводит, но мне надо каждое поле отдельно вывести. Пытался вывести вот так
{% block content %}
{{ content.body }}
{{ content.field_in_slide_img }}
{% endblock %}
Но нифига не работает. Может кто сказать дураку как правильно поля по отдельности выводить?
Темизация в Drupal 9
Главные вкладки
Лучший ответ
Всё, всем спасибо за помощь (с модулем и перезаписью результатов всё получилось), как обычно, долбился в закрытую дверь башкой, а ключ то перед носом валялся
Комментарии
Всё зависит от того, что за слайдер и как он сделан. Какое имя шаблона у вас?
Ну я использую owlcarousel. Он вроде как слайдит всё что выводит блок. Создал файл block--slayder-na-glavnoy.html.twig чтобы темизировать блок. А имя шаблона чего? Сайта? Если сайта то я свой собственный ковыряю, пытаюсь так сказать шаблон с нуля сделать. Просто мне нужно понять как выводить поля по отдельности. Пытаюсь вывести как написал, он ничего вообще не выводит. Последний раз я на 6 друпале сайт делал, а в 9 вообще всё по другому
Судя по названию, у вас шаблон блока. Обычно в таких шаблонах только общая разметка блока.
Посмотрите какие есть шаблоны в модуле owncarousel
Отбросим сейчас карусель Я так понимаю я не правильно обозвал файл? Я вот честно в инете искал тоже нифига так и не понял как правильно обзывать файлы в 9 друпале, раньше в самом views видно было. Вот у меня есть Представление типа блок с машинным именем slayder_na_glavnoy, если залезть в редактирование его то там в Расширенных есть ещё одно машинное имя in_slider_block. Как тогда правильно его обозвать, есть вообще мануал по этому на 9 друпал? У меня уже мозг кипит
Чтобы правильно назвать шаблон, нужно включить twig debug и в html будут видны имена шаблонов
Вот с этим большое спасибо. Осталось теперь понять как поля выводить. Мнеб хотябы чей-нибудь файл где поля по отдельности выводятся для примера
Включаете дебаг.
Ищите нужное название.
Например:
* block--breadcrumb.html.twig
* block--system-breadcrumb-block.html.twig
* block--system.html.twig
x block.html.twig
-->
Крестиком обозначен действующий шаблон, звёздочкой - шаблоны для выбора.
Копируете шаблон, переименовываете.
Идёте в Управление полями материала и смотрите Машинное имя поля.
Вывод поля:
{{ content.field_name }}
Вносите свои изменения.
Если всё правильно, название вашего нового шаблона будет обозначено крестиком.
Ясно. Спасибо. Будем дальше мучаться, может чё получиться
Надо не страдать, а читать документацию и смотреть примеры других шаблонов
Может плохо искал, но не нашёл нифига.
Возможно я чего-то не понимаю, но зачем нужен кастомный шаблон для вывода банального слайдера?
Да пофиг уже на слайдер, я просто именно с него начал. Перешёл на обычный блок и нифига не могу вывести поля по отдельности.
{% block content %}
{% if content %}
{{ content }}
{% endif %}
{% endblock %} Выводит данные.
{% block content %}
{% if content %}
{{ content.body }}
{{ content.field_in_slide_img }}
{% endif %}
{% endblock %} Нифига ничё не выводит.
Может ещё чё надо прописывать при этом, ничерта найти не могу. Фиговый из меня поисковик.
Я не понимаю что я делаю не так. Почему {{ content }} выводит оба поля, а {{ content.body }} и {{ content.field_in_slide_img }} ничего не выводят. Может имена полей совсем не эти (хотя других я и не создавал ещё). Есть возможность отобразить имена выводимых полей в данном блоке? В друпал 6 помню был какой-то код который выдавал имена выводимых полей, а есть ли в 9 такое? Возможно как обычно бывает допускаю мелкую ошибку, а в упор её не вижу и ищу не там.
Вам нужно определиться с именем шаблона, для этого изучайте документашку.
Конструкция {{ content.body }} точно должна работать для шаблонов node (например node.html.twig) или taxonomy-term (например taxonomy-term.html.twig) (при наличии поля body).
Думаю в Вашем случае имя шаблона должно быть более конкретное, например node--[content-type]--[viewmode].html.twig
Список имеющихся полей можно посмотреть по адресу /admin/reports/fields
может вам twig_tweak и twigsuggest помогут?
А что такое "блок с полями"? Каким образом он создан? Про поля сущностей/нод знаю, а про "блоки с полями" не слышал...
Да это я так просто обозвал. Яж чайник :). Последний раз делал сайтик на 6 друпале, уже нифига ничё не помню. Ща распишу чё я пытаюсь сделать.
Короче. Создал я тип материала. В нём только картинка и текст. Создал блок выводящий 3 уже созданных материала с картинкой и текстом. Сделал чтоб вместо картинки её урл выводился. Теперь пытаюсь сделать так, чтобы можно было этот урл впихнуть в бэкграунд дива. Тоесть хочу чтобы грубо говоря каждый из трёх материалов выводился вот в таком виде.
Текст
</div>
Для этого мне надо вывести поля по отдельности. Но похоже я что-то делаю не так. Я уже просто запутался и начинаю тупить. Объясните дураку как правильно код в файле *.html.twig написать Может я вывожу не правильно и надо кроме блока ещё что в представлении добавить.
Да и дальше же нужно будет умение вертеть полями как угодно.
Ключевое слово Views так и не прозвучало, только по скриншоту можно угадать Теперь хоть что-то стало понятно.
Попробуйте в шаблоне вместо content.body использовать node.body или просто body.
Если всё равно не получится, можно (и будет правильнее) всё, что Вам хочется сделать через REWRITE RESULTS в настройках поля Views прямо в админке, и не нужно морочиться с правильным именем шаблона.
Большое спасибо, не знал что там такое есть, этож всё меняет Жаль там вот такое не работает
<div style="background-image: url('{{ field_in_slide_img }}')">
стили он не ест Попробую с указанным вами модулем.PS А еще вот такой модуль есть: https://www.drupal.org/project/background_image_formatter
Всё, всем спасибо за помощь (с модулем и перезаписью результатов всё получилось), как обычно, долбился в закрытую дверь башкой, а ключ то перед носом валялся