
Для одного сайта мне понадобилось создать два типа материала. Но оба типа материала должны были быть записью в блоге. То есть надо было сделать так, чтобы при создании новой записи в блоге пользователь мог выбрать какого типа запись это будет: обычная запись в блог или (в моем случае) кулинарный рецепт. Для каждой записи нужны были свои поля. Для блога – теги, группа, содержимое. Для рецепта – блюдо, блюдо из, событие, родина, продукты и т.д. Полей много, поэтому нежелательно смешивать их в куче а при создании материала показывать нечто типа этого:
И при выборе типа записи для обычной записи соответственно можно было видеть такую картину:
А для рецепта такую:
Ну что-ж, задачу описали. Приступаем к реализации.
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.
Покажу еще одно условие, когда мне надо было показать поле при любом выборе: и для блога и для рецепта:
В общем как то так. Ничего сложного. Главное начать.