Разный набор полей у Content Type в зависимости от раздела.

Главные вкладки

Аватар пользователя mutuz mutuz 30 октября 2010 в 22:41

Подскажите, пожалуйста, как быть!

Необходимо создать сайт для хранения нормативных документов.
Вот пример структуры:

Общий принцип работы:
Пользователь выбирает необходимый раздел и загружает в него документацию + заполняет необходимые поля на форме.
Основная сложность заключается в том, что количество полей(в форме загрузки) зависит от того, в какой непосредственно раздел пользователь загружает документ.

Я вижу 3 варианта:
1 - Создать один Content Type "Нормативные документы" с полным набором полей для всех типов разделов(их будет не больше 15-20), а при создании контента показывать только те поля, которые относятся к данному разделу. Только как это лучше сделать? Необходимо будет проверять заполнены обязательные поля(для одного типа они могут быть обязательны, а для другого нет) или нет.
2 - Для каждого раздела создать Content Type со своим набором полей. Вот только 80% разделов имеет один набор полей, и лишь у остальных 20% разделов набор полей отличается.К том уже возможно возникнут сложности с отображением этих типов содержимых через Views(Как их вместе в таблице показать?)
3 - Забить на друпал(если в нем это можно сделать только через ж..у) и делать самому на базе Yii, CI или Symfony.

Комментарии

Аватар пользователя Ch Ch 30 октября 2010 в 22:51

"mutuz" wrote:
Создать один Content Type "Нормативные документы" с полным набором полей для всех типов разделов(их будет не больше 15-20), а при создании контента показывать только те поля, которые относятся к данному разделу.

А как вы узнаете, в какой раздел пользователь будет добавлять свой материал?

Аватар пользователя oboroten oboroten 30 октября 2010 в 22:57

задача интересная. Я бы посмотрел в сторону conditional_fields он позволяет на основе выбора варианта в одном поле показывать или скрывать дополнительные поля...

Аватар пользователя etomilin etomilin 30 октября 2010 в 23:01

"Ch" wrote:
А как вы узнаете, в какой раздел пользователь будет добавлять свой материал?

Content taxonomy + Conditional Fields

Аватар пользователя mutuz mutuz 30 октября 2010 в 23:37

Вот только для 7 версии Conditional Fields пока нет Sad
А как в нем обстоят дела со скрытием полей, обязательных для заполнения?
Например: Если я для общего типа содержимого создам поле, обязательное для заполнения(по-умолчанию пустое), а для определенного раздела с помощью Conditional Fields скрою это поле, то будет ли ругаться Drupal при сохранении? Ведь поле осталось незаполненное.

И еще - добавление документа необходимо сделать так:
- Пользователь заходит в необходимый раздел
- Нажимает кнопку добавить
- Открывается форма с набором полей характерных для данного раздела.
- Пользователь заполняет поля и загружает документ
???
- профит

Т.е. пользователь не выбирает тип документа и т.д., а тип должен присваиваться автоматически в зависимости от того, в каком разделе пользователь нажал на кнопку "Загрузить документ". (Ну а в случае, если пользователь нажал на кнопку "загрузить" из главного меню, то тут можно показать выпадающий список со списком разделов).

И еще одна хотелка:
Для каждого раздела в форме необходимо будет показать выпадающий список, с набором значений характерным для данного раздела(то есть мне надо в зависимости от раздела выбрать определенный набор данных из БД в combobox). Я так понимаю без своего модуля/хуков тут не обойтись(что в принципе не страшно)?

Аватар пользователя Dan Dan 31 октября 2010 в 11:24

Для простоты, сделайте ссылку на добавления ноды как /node/add/node-type/123 , где 123 - номер раздела. Далее - альтер формы редактирования ноды.

Аватар пользователя G.A. Vinogradov G.A. Vinogradov 1 ноября 2010 в 10:44

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