Некоторые ограничения в Drupal 8 Paragraphs

В Drupal 8 есть такой чудный модуль — Paragraphs. В принципе, он и в семерке есть, но сейчас про D8. Модуль этот такой страшной силы, что однажды попользовавшись, возникает желание вообще все полнотекстовые поля (типа body) немедленно заменить ссылками на параграфы. Потому что разве не круто — вместо тупого Full-HTML-поля, в котором все надо делать руками (и не все еще сделается) — можно для каждого материала по-своему контент разметить. Большие картинки, маленькие с обтеканием, видео, блоки, вьюзы, вкладки, аккордеоны — и все это не в редактор пихается, а просто мышкой накликивается. Главное заранее набор этих параграфов определить, и тогда даже контент-менеджер при некоторой сноровке сможет размечать навороченные страницы контента из этих параграфов самостоятельно. И ведь многие полезные — уже для нас определены, смотри модуль Bootstrap Paragraphs.

Круто же. Но, как говорится, есть некоторые нюансы.

Допустим, мы хотим вкорячить в качестве параграфа блок. Есть такая возможность, вроде бы удобно. Но если попробовать — внезапно выяснится, что вставленного в параграфы блока почему-то не видно. Оказывается, чтобы его было видно — он должен быть размещен в каком-нибудь регионе и видим (в смысле настроек видимости) на текущей странице. Спрашивается — на фига его тогда в параграф пихать, если его и так уже видно где-то на странице? Непонятно.

Дальше, возникла нужда вывести три вкладки с одним и тем же вьюзом в каждой, но с разными аргументами. Отфильтровать, в общем, по трем разным терминам таксономии. Добавил вкладки, вставил один и тот же вьюз в каждую с разным аргументом — выводятся три одинаковых вьюза, везде в аргументе стоит первый термин из трех. Оказывается, вьюз там кэшируется промежуточно, и в оставшиеся два параграфа рендерится уже из кэша. Пришлось сделать три разных дисплея с жестко заданными аргументами — так работает.

Ну и самая неприятная особенность — это переводы параграфов. На странице настроек content translation везде напротив полей параграфов стоят предупреждения: не надо, не нажимайте, не поддерживается. Типа, переводить поля параграфов нельзя, но можно — поля, которые в сами параграфы входят. Но в данный момент работает это, к сожалению, только для стандартных полей типа текста, картинок и т.д. А если есть в материале, скажем, параграфы-вкладки, тут сразу две проблемы:

— нельзя изменить их состав: вот ровно сколько было вкладок — столько изволь в переводе сделать;

— а когда сохранишь перевод — на выходе будет WSOD, потому что не работает сейчас нормально перевод таких сложных параграфов.

Из-за этого приходится переводы таких материалов отдельными нодами делать. А в Drupal 8, к сожалению, ликвидировали возможность указать, что материал X является переводом для материала Y. Поэтому для переключения языка на страницах таких материалов пришлось редирект использовать. Такой себе костыль.

Но даже с упомянутыми особенностями — довольно удобная в целом штука, эти параграфы.

Комментарии