Плавающий блок

Аватар пользователя Николай_новичок Николай_новичок 15 октября в 6:50

Всем доброе время суток.
Подскажите пожалуйста. Есть блок, на главной странице блок располагается в регионе контента и имеет множество полей. При переходе на другую страницу он должен смещаться в регион header, а также часть полей не должна отображаться.

Комментарии

Аватар пользователя marassa marassa 15 октября в 7:26

Николай_новичок wrote: Есть блок, на главной странице блок располагается в регионе контента и имеет множество полей. При переходе на другую страницу он должен смещаться в регион header

Это просто: добавьте блок дважды в оба региона и задайте условия отображения чтобы он в "регионе контента" отображался только на главной странице (Pages: <front>), а в хедере наоборот (Pages: <front> и ниже галку на Hide for the listed pages).

Николай_новичок wrote: также часть полей не должна отображаться

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

Аватар пользователя Николай_новичок Николай_новичок 15 октября в 8:02

marassa wrote: Тут нужно понять что это за блок, как он создан и откуда в нем берутся поля. Строго говоря у блока как такового никаких полей нет, они есть у сущности, которая визуализируется в виде блока.

Поля настраивал с помощью field.html.twig (под свой шаблон).

Аватар пользователя marassa marassa 15 октября в 8:07

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

Аватар пользователя Николай_новичок Николай_новичок 15 октября в 9:03
{% block content %}
  {{ content.field_NAME }}
  {{ content.field_NAME }}
...
{% endblock %}

Таким образом я вывел поля через мой блок, как проверить блок на машинное имя. Примерно так, но это не работает
{% if block == 'my_block' %}

Аватар пользователя Николай_новичок Николай_новичок 16 октября в 7:35

marassa wrote: но навскидку проще всего сделать два разных блока

Не проще. Есть один и тот же блок зачем плодить его? Да и к тому же нужно разбираться с twig шаблонами. Без знаний шаблонов многое не сделаешь. Вот я и начинаю хоть с чего то разбираться. И прошу помочь.

Этот блок находится в контенте

$input Drupal\block\Entity\Block(30)
contents Available methods (107) Static class properties (2)
protected id -> string(10) "events"

Этот блок находится в header

$input Drupal\block\Entity\Block(30)
contents Available methods (107) Static class properties (2)
protected id -> string(10) "events_abbreviation"

Хочу вытащить машинное имя в строке: protected id -> string(10) "events" сравнить его в шаблоне block--bundle--[машинное_имя_типа_блока].html.twig, на просторах инета я не нашел как можно сравнить в twig по id
В preprocess - функциях, прямо скажу я полный ноль.

Аватар пользователя marassa marassa 16 октября в 7:54

Николай_новичок wrote: Есть один и тот же блок зачем плодить его?

Если бы он был реально "один и тот же", то у Вас и вопросов бы никаких не возникало. Не вижу ничего кривого в том, чтобы для вывода двух похожих, но разных блоков создать два похожих, но разных блока. Ну да ладно.

Николай_новичок wrote: Хочу вытащить машинное имя в строке: protected id -> string(10) "events" сравнить его в шаблоне

А что лежит в {{ attributes.id }} ?

Аватар пользователя marassa marassa 16 октября в 9:20

Николай_новичок wrote: как проверить блок на машинное имя. Примерно так, но это не работает
{% if block == 'my_block' %}

Тут надо понимать, что block в данном случае - просто ключевое слово (тег) языка twig и не имеет ни малейшего отношения к друпаловским блокам. Чисто однофамильцы.