Множественные поля в Drupal 7

multifield

Терминология не устоялась, все называют subject по-разному: составные поля, множественные поля, коллекции полей, мультиполя, зависимые поля… Эту же неразбериху можно проследить в названиях проектов модулей и обсуждениях на сайте drupal.org.

Всё это определения возможности создания объединенных в одно поле двух и более атомарных полей. Лично мне нравится термин — «составное поле».

О конструкторе полей

Конструктор полей — одна из популярных фишек друпала. В паре с созданием типов публикаций это дает широкие возможности для развития структуры объектов, которыми управляет CMS. Ирония в том, что до 7-й версии ядра задача конструктора полей лежала на сторонних модулях, самый известный из которых — CCK.

В 7-ке разработчики включили конструктор полей в комплект поставки движка. Они не стали перегружать базовый функционал, конструктор остался плоским, как и ранее в CCK. Т.е. составные поля в «Drupal 7 из коробки» делать нельзя.

Семерка вышла пять лет назад (5 января 2011), но пока мододелы и энтузиасты не смогли сделать на все 100% рабочий модель для создания составных полей. Я расскажу о паре таких модулей — это проекты Multifield и Field Collection.

Multifield модуль

Страница проекта — www.drupal.org/project/multifield

Я сомневался, стоит ли качать альфа версию и пытаться пользоваться. Не понимаю : зачем выкладывать проекты в далеком от готовности состоянии? Скачать меня убедил авторский ролик о модуле. Мне удалось повторить все этапы из ролика (кое что там уже не соответствует действительности), и получить требуемый результат — спроектировать множественное поле, собрав его из базовых атомарных кирпичиков.

Текущая версия —  7.x-1.0-alpha1 на столько сырая, что от использования модуля в итоге пришлось отказаться. Обнаруженные проблемы:

  • Поля image глючат, если в них не загрузить картинку;
  • Если определено хоть одно значение составного поля, то структуру, набор полей уже нельзя изменять.

Значения у каждого атомарного поля в составе коллекции может быть только 1, но это не частая потребность, так что можно с этим мириться.

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

Field Collection модуль

Страница проекта — www.drupal.org/project/field_collection

Данный модуль гораздо богаче по возможностям. Версия 7.x-1.0-beta11 позволяет создавать коллекции из коллекций, и не ограничивает кол-во атомарных значений. Предлагается полная свобода в конструировании составных полей.

Модуль использует Entity API. Каждый экземпляр составного поля — это ещё один объект, сравнимый по сложности с публикацией. При загрузке ноды, данные коллекции полей не загружаются автоматически. Например, в шаблоне вам придется догружать их самостоятельно.

В примере грузятся данные составного поля field_bg2:

Не такие уж большие неудобства. С критическими ошибками при использовании модуля я не столкнулся, несмотря на beta статус. После ввода данных, конструктор не ограничивает модификацию структуры полей.

Написать комментарий

Мало букафф? Читайте есчо !

Как рендерить отдельные поля элемента field collections

Январь 31, 2019 г.

Модуль field_collection всю свою историю существования (аж 2010 года) проходит в статусе beta версии. Тем не менее многие разработчики используют его в своих проектах. На текущий момент это версия 7.x-1.0-beta13. Хотя FC - это ещё один entity, ...

Читать

Примеры работы с EntityFieldQuery

Декабрь 7, 2017 г.

Один раз начав работать с EntityFieldQuery, вы уже не захотите городить SQL запросы с джойнами таблиц полей сущностей. Что то сложное, возможно, сделать будет слишком трудно на этом конструкторе, но типовые выборки данных делать приятно, быстро и удобно. ...

Читать

 

Комментарии к «Множественные поля в Drupal 7»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: