Pull to refresh

Создание CCK-мультиполей

Reading time 3 min
Views 4.2K
Данный топик является своеобразным ответом на Нетривиальная задача для Node Reference поля Drupal и Модуль для кулинарного сайта. Но, в отличие от авторов тех двух топиков, я не собираюсь изобретать велосипед и писать свое решение, а просто покажу как эта задача будет решаться в недалеком будущем (да и сейчас вобщем-то уже можно), и что станет стандартом де-факто в Drupal. Почему я так уверенно завляю о стандарте? Все очень просто — речь пойдет о CCK (Content Construction Kit) 3.



Вообще говоря, насколько мне известно, группировка нескольких CCK полей в одно мультиполе — это главная причина появления CCK 3. Данная функция является востребованной (мне приходится сталкиваться с ней практически в каждом Drupal-проекте) и каждый раз приходится писать новое CCK-поле (либо переиспользовать наработки), чтобы получить новое поле, состоящее из более простых. А написание CCK-поля — это довольно рутинная задача, на которую уходит не так уж мало времени (в зависимости от сложности конечного поля). После того, как данная задача появилась у меня на горизонте в очередной раз, я решил провести небольшое исследование на эту тему в интернете — ибо задача далеко не уникальная, и сталкиваться с ней должны были многие (одно из доказательств тому — 2 топика на эту тему за последнюю неделю на хабре). После непродолжительного гугления я и наткнулся на CCK 3, который сейчас находится в состоянии dev, а ссылка на скачивание даже не вынесена в список Development releases на странице проекта. Выйти на закачку можно двумя путями — либо посмотреть всю историю релизов в соответствующем разделе, либо со страницы Reports -> Available updates любого друпал-проекта, где установлены модули Update status и Content (базовый модуль CCK).

Но, хватит лирики. Давайте уже сделаем свой кулинарный сайт с преферансом и куртизанками, используя CCK3, а если быть немного точнее — Content Construction Kit (CCK) 6.x-3.x-dev (2010-Jan-26).

В качестве заготовки у нас будет 2 контент-тайпа — Ingredient и Recipe — Ингредиент и Рецепт соответственно. Пока что это 2 контент-тайпа с абсолютно стандартными настройками.



Создадим несколько ингредиентов — пригодятся для дальнейшего тестирования (я просто задал нодам заголовки).



Дальше идем в установку модулей, и включаем то, что нам пригодится — а это Content Multigroup, Node Reference и Text. Установщик модулей сам доставит все, что ему не хватает.



Теперь идем в управление полями контент-тайпа Recipe и добавляем 2 поля, которые будут отвечать за 1 ингрединет — собственно сам ингредиент (Node reference на контент-тайп Ingredient) и количество (тут я просто воспользовался полем Text).



А вот с этого момента и начинается особая Multigroup магия. Добавим к полям рецепта группу Ингредиенты, поля Ингредиент и Количество добавим в эту группу, а тип у группы зададим Multigroup.



Еще, для более удобного отображения именно этого примера, я выставил галку Multiple columns в настройках поля — поля в рамках одного мультиполя будут идти не один под другим, как это обычно бывает, а в 1 строку, что для небольшого количества простых полей (как в нашем случае) удобно.

Наконец-то пришло время создать наш первый рецепт. Описывать что и как думаю не стоит — все и так должно быть понятно на скриншоте:



После сохранения ноды мы увидим нечто следующее:



Пока что не очень красиво, но уже работает =) Поколдуем немного с отображением полей:



И получим довольно таки красивый рецепт:



Вот, в общем-то, и все, что я собирался рассказать о новой фиче CCK3. Остается добавить только одно — модуль находится в состоянии dev, и использование его на продакшн не рекомендуется авторами модуля. Хотя, если верить статистике, модуль уже используется на 6.5к+ сайтах, у которых включена функция автоматической проверки состояния модулей, и не факт, что все они живут исключительно для ознакомителения =)
Tags:
Hubs:
+23
Comments 26
Comments Comments 26

Articles