Организация повторяющихся полей (например серия/цикл для книг), используется CCK

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

Аватар пользователя dfaker dfaker 21 марта 2009 в 12:32

Допустим есть авторы книг. У книг есть поле "серия". Самый простой (и избыточный) вариант сделать его текстовым и не париться в дальнейшем. Если использовать такой вариант, то хотелось бы при создании новой книги давать возможность выбрать значение из списка уже существующих серий автора + возможность добавить новую. Проблема в том что при создании новой книги автор еще не известен и выбор можно делать из списка всех серий, тогда было бы удобно сделать словарь таксономии для серия и выбирать из него, но серии в принципе могут иметь одинаковое название а хотелось бы жесткой принадлежности серии к определенным автору(ам).

Можно попробовать перехватывать сохранение книги и добавлять выбранный термин серии также к выбранным авторам (поле типа node reference с множественным выбором), а на форме создания книги в списке существующих терминов помимо названия серии указывать также автора (может быть в скобках) чтоб было видно кому принадлежит серия (такой подход может быть тормазнутым)

Проблему кое как описал, подскажите разные направления решения

Комментарии

Аватар пользователя pro-online.ru pro-online.ru 22 марта 2009 в 14:14

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

Подсасываться в таком варианте будет, конечно, все сразу, но после набора 1—2 символов список, думаю, получится разумной длины. Это не слишком сложно с точки зрения пользователя (привыкаешь моментально), и очень просто в реализации.

Аватар пользователя dfaker dfaker 22 марта 2009 в 14:22

Так я хочу уйти от текстовых полей, это избыточно плодить заведомо одинаковые строки (названия серии, в которую могут входить порядочно книг) многократно. Да и что-то не замечал что текстовые поля (в варианте cck из коробки) могу автокомплитить, хотя еще проверю конечно. Хотелось бы как-то это дело организовать с помощью таксономии, но с разделением серий разных авторов.

Аватар пользователя pro-online.ru pro-online.ru 22 марта 2009 в 14:41

Там нужно аккуратно действовать.

1. Заведите для серий отдельный тип материалов (в который помещайте, например, общие описания серии — заодно юзеры смогут их почитать).
2. В шаблоне для книжек при помощи CCK добавьте поле типа Node Reference, и выберите соответствующий тип материалов, на который можно ссылаться.
3. Зайдите на вкладку Display fields для типа материалов, в котором у вас книжки лежат, и настройте внешний вид по вкусу.

Все.

UPD: при этом «одинаковые строки» не плодятся, вы просто получаете ссылки на описание серий.

Аватар пользователя dfaker dfaker 22 марта 2009 в 21:39

Это не тектовые строки, а ссылки на существующие ноды, разумеется я знаком с полем node-reference которое может автокопплитить. Это вариант не рассматривается, допустим удалил я книги а серия-нода останется (да и создавать эти ноды нужно предварительно).