Модуль Paragraphs Library позволяет переиспользовать один параграф в нескольких местах. У него достаточно запутанная архитектура, усугубляющаяся неоднозначным неймингом.
Модуль добавляет в друпал новый тип сущности Paragraphs library item и новый тип параграфа From library. При добавлении параграфа в "библиотеку" создаётся сущность Paragraphs library item, которая через поле paragraphs ссылается на созданный параграф. Т.е. "библиотека параграфов" это технически "библиотека сущностей Paragraphs library item", и на странице admin/content/paragraphs
выводятся не параграфы, а так же сущности Paragraphs library item.
После этого, чтобы в ноде (условно) переиспользовать какой-то параграф, в неё добавляется параграф типа From library и выбирается добавленная ранее сущность Paragraphs library item.
Схематично это выглядит так:
Условная нода через условное поле field_paragraphs ссылается на параграф типа "From library".
Параграф "From library" через поле field_reusable_paragraph ссылается на сущность "Paragraphs library item".
Сущность "Paragraphs library item" через поле paragraphs ссылается на параграф.
Пример программного получения значения поля из конечного параграфа:
$node = Node::load(123);
$from_library_paragraph = $node->get('field_paragraphs')->first()->entity;
$paragraphs_library_item = $from_library_paragraph->get('field_reusable_paragraph')->entity;
$paragraph = $paragraphs_library_item->get('paragraphs')->entity;
$field_value = $paragraph->get('field_example')->value;
- Тест оверхеда Layout Builder и Paragraphs
- Производительность EntityStorageInterface::load() vs EntityStorageInterface::loadMultiple()
- Производительность Entity Query vs Query Builder vs Sql query
- Отличие методов BaseFieldDefinition::setDefaultValue() и BaseFieldDefinition::setInitialValue()
- Производительность Drupal::token()->replace() vs strtr() vs inline_template
Добавить комментарий