Зависимые поля Conditional Fields

Drupal / 8 июня 2012
/ 3155

Для одного сайта мне понадобилось создать два типа материала. Но оба типа материала должны были быть записью в блоге. То есть надо было сделать так, чтобы при создании новой записи в блоге пользователь мог выбрать какого типа запись это будет: обычная запись в блог или (в моем случае) кулинарный рецепт. Для каждой записи нужны были свои поля. Для блога – теги, группа, содержимое. Для рецепта – блюдо, блюдо из, событие, родина, продукты и т.д. Полей много, поэтому нежелательно смешивать их в куче а при создании материала показывать нечто типа этого:

Для одного сайта мне понадобилось создать два типа материала

И при выборе типа записи для обычной записи соответственно можно было видеть такую картину:

Запись в блог

А для рецепта такую:

А для рецепта такую

Ну что-ж, задачу описали. Приступаем к реализации.
1. Устанавливаем модуль Conditional Fields 
2. В нужном нам типе материала, в управлении полями создаем все поля которые нам необходимы и для одного типа записи и для другого.
3. Создаем поле Тип как на скриншотах:Создаем поле Тип

Создаем поле Тип

4. Переходим по вкладке Manage Dependencies
5. Создаем новую эту самую штуку:

Создаем новую эту самую штуку

Вкратце система такая: Dependent - зависимое поле Dependee - от чего зависит зависимое поле.
Т.е. в моем случае Основной текст будет показан только при соблюдении определенных условий в поле Тип.

6. Устанавливаем эти самые условия

Устанавливаем эти самые условия

Поле "Значения" ставим Insert value from widget... т.е. при выборе одного из значений - я выбрал Обычная запись.
"Состояние формы" и "Эффект" я думаю понятно - при выборе "Обычная запись" будет показано наше поле.

7. В настройках отображения ставим птичку возле "Theme the dependent like an error message if the dependency is not triggered"

ставим птичку возле

8. Сохраняем и повторяем пункты 5-7 для всех полей.
У меня вот такая картина получилась:

У меня вот такая картина получилась

Настройки модуля довольно гибкие. Условия можно создать какие хотите. У меня в основном только такие условия как я описал в п. 6.

Покажу еще одно условие, когда мне надо было показать поле при любом выборе: и для блога и для рецепта:

показать поле при любом выборе


В общем как то так. Ничего сложного. Главное начать.

comments powered by HyperComments