Size: a a a

2019 October 21

MV

Mykola Veriga in Drupal RU
Alexey Korepov
О, прям то что надо - спасибо! Чёт до этого ни разу его не ставил, считал что в twig проще всё оформить, а тут вот понадобилось сделать для одного проекта чтобы в админке мышкой всё накликивалось. А можно в DS сделать поле, которое будет в Drupal Layouts видно в списке добавление блоков на страницу ?
да, там есть блоки

а в общем в самом модуле можно посмотреть много примеров, как добавлять конфигурации в поля

добавить свою конфигурацию для css класса
источник

AK

Alexey Korepov in Drupal RU
Mykola Veriga
да, там есть блоки

а в общем в самом модуле можно посмотреть много примеров, как добавлять конфигурации в поля

добавить свою конфигурацию для css класса
Там блоки немного наборот работают - можно оформить стандратный друпаловский блок как поле DS (например вывести блок "Последние материалы" как поле на странице ноды.

А мне нужно наоборот - создать блок, который выводит токен текущей сущности (например `[node:field_term:entity:field_mycustomfield]`) через Drupal Layout Builder.

Собственно именно это и есть основная задача - на странице ноды через её layout builder вывести в блоке значение отдельного поля привязанного к ней термина таксономии (а не весь термин рендерить). У Layout Builder доступны в списке только поля самой ноды, но не вложенных в неё сущностей.
источник

MV

Mykola Veriga in Drupal RU
Alexey Korepov
Там блоки немного наборот работают - можно оформить стандратный друпаловский блок как поле DS (например вывести блок "Последние материалы" как поле на странице ноды.

А мне нужно наоборот - создать блок, который выводит токен текущей сущности (например `[node:field_term:entity:field_mycustomfield]`) через Drupal Layout Builder.

Собственно именно это и есть основная задача - на странице ноды через её layout builder вывести в блоке значение отдельного поля привязанного к ней термина таксономии (а не весь термин рендерить). У Layout Builder доступны в списке только поля самой ноды, но не вложенных в неё сущностей.
ноду в context искать, на странице она там есть
источник

AK

Alexey Korepov in Drupal RU
Mykola Veriga
ноду в context искать, на странице она там есть
Ну так сначала, получается, мне надо ручками сделать блок, который ищет ноду в контексте, потом выводит значение поля вложенного термина из этой ноды. А потом через layout builder размещать этот блок на страницу ноды в нужное место. Слишком уж сложный квест
источник

MV

Mykola Veriga in Drupal RU
Alexey Korepov
Ну так сначала, получается, мне надо ручками сделать блок, который ищет ноду в контексте, потом выводит значение поля вложенного термина из этой ноды. А потом через layout builder размещать этот блок на страницу ноды в нужное место. Слишком уж сложный квест
нужно проще, тогда view_field_formatter

и указать поле как view и в ней указать какое поле термина
источник

AK

Alexey Korepov in Drupal RU
Mykola Veriga
нужно проще, тогда view_field_formatter

и указать поле как view и в ней указать какое поле термина
С вьшкой в пятницу вариант уж обсуждали - можно, но слишком уж большие накладные расходы.

В общем похоже проще без новомодного Layout Builder будет реализовать, используя вывод полей через встроенный в DS функционал.

Ну а потом в DS для 9.х может и встроенную интеграцию с Layout Builder завезут. Просто надеялся что она уже там есть
источник

MV

Mykola Veriga in Drupal RU
Alexey Korepov
С вьшкой в пятницу вариант уж обсуждали - можно, но слишком уж большие накладные расходы.

В общем похоже проще без новомодного Layout Builder будет реализовать, используя вывод полей через встроенный в DS функционал.

Ну а потом в DS для 9.х может и встроенную интеграцию с Layout Builder завезут. Просто надеялся что она уже там есть
какие расходы? придумали себе непонятно что, Display Suite во много раз больше нагрузку дает
источник

AK

Alexey Korepov in Drupal RU
Mykola Veriga
какие расходы? придумали себе непонятно что, Display Suite во много раз больше нагрузку дает
Инициализировать и рендерить целую вьшку, которая просто выведет значение одного поля (циферку) - это явно будет тормознее (ведь вьюшка будет заново по параметрам искать нужную сущность), чем DS просто по токену отрендерит значение этого поля из уже загруженной в context сущности. Особенно если таких полей десяток на странице ноды - это 10 вьюшек будет рендерится.
источник

MV

Mykola Veriga in Drupal RU
Alexey Korepov
Инициализировать и рендерить целую вьшку, которая просто выведет значение одного поля (циферку) - это явно будет тормознее (ведь вьюшка будет заново по параметрам искать нужную сущность), чем DS просто по токену отрендерит значение этого поля из уже загруженной в context сущности. Особенно если таких полей десяток на странице ноды - это 10 вьюшек будет рендерится.
замеряли или просто придумали?
источник

AK

Alexey Korepov in Drupal RU
Mykola Veriga
замеряли или просто придумали?
просто предположил, точнее представил как оно под капотом примерно будет работать
источник

MV

Mykola Veriga in Drupal RU
вот в том то и дело. а DS как достает? сущность не грузит? или рендер отдельно не делает? а рендера у него огромное количевство
источник

MV

Mykola Veriga in Drupal RU
есть разница кто сформирует запрос к базе или view или DS?
источник

AK

Alexey Korepov in Drupal RU
Mykola Veriga
вот в том то и дело. а DS как достает? сущность не грузит? или рендер отдельно не делает? а рендера у него огромное количевство
DS грузит 1 раз на страницу, а вьшка - отдельная на каждое поле. У меня на странице ноды будет выводиться 10 полей из термина (вперемешку с полями из самой ноды) - DS, как я предполагаю, 1 раз грузанёт сущность, и потом просто отрендерит токены для вывода и всё. А вьюшками - это 10 вьюшек загрузится, каждая инициализируется, сделает запрос к базе чтобы найти ноду, отрендерит поле.
источник

MV

Mykola Veriga in Drupal RU
Alexey Korepov
DS грузит 1 раз на страницу, а вьшка - отдельная на каждое поле. У меня на странице ноды будет выводиться 10 полей из термина (вперемешку с полями из самой ноды) - DS, как я предполагаю, 1 раз грузанёт сущность, и потом просто отрендерит токены для вывода и всё. А вьюшками - это 10 вьюшек загрузится, каждая инициализируется, сделает запрос к базе чтобы найти ноду, отрендерит поле.
DS будет грузить ноду с ID терминов, а сам термин будет отдельно грузить другим запросом
источник

MV

Mykola Veriga in Drupal RU
тоже самое
источник

AK

Alexey Korepov in Drupal RU
Mykola Veriga
DS будет грузить ноду с ID терминов, а сам термин будет отдельно грузить другим запросом
ну опять же 1 раз, а не 10 раз на каждое поле.
источник

AK

Alexey Korepov in Drupal RU
А, во кстати решение попроще будет https://www.drupal.org/project/entity_field_token - просто насоздавать в ноде полей с токенами вида [node:field_term:entity:field_mycustomfield] - и всё
источник

MV

Mykola Veriga in Drupal RU
Alexey Korepov
ну опять же 1 раз, а не 10 раз на каждое поле.
а view не будет ноду грузить же, только термин так де само
источник

AK

Alexey Korepov in Drupal RU
Mykola Veriga
а view не будет ноду грузить же, только термин так де само
да, но 10 раз делать запрос к базе чтобы его каждый раз найти ;)
источник

MV

Mykola Veriga in Drupal RU
Alexey Korepov
да, но 10 раз делать запрос к базе чтобы его каждый раз найти ;)
если термин один и тот же тогда один раз загрузит и в кеш

а как DS один раз будет грузить термин на все блоки?
источник