Как сделать многоступенчатые формы с Drupal, используя различные типы узлов
Я создаю очень простой сайт объявлений. На этом сайте я буду иметь различные типы контента; такие как:
- Автомобиль (который имеет поля cck: год, километры, цвет
- Дом (который имеет поля cck: количество этажей, сад (да / нет)
Таким образом, каждый "элемент" является типом контента.
Я перечисляю все типы контента в представлении, которое я показываю пользователю, а затем нажимаю на ссылку, чтобы "создать тип контента типа (клик-тип)".
Это работает довольно хорошо; но я не могу избавиться от "создать новую машину" в верхней части страницы создания (которая отражает поведение "drupalish").
Я хотел бы, чтобы это было более удобным способом, таким как форма с тремя шагами как:
- Выберите категорию
- Выберите ваши варианты
- Зарегистрируйтесь, чтобы опубликовать новое объявление
Я видел ctools; которые обеспечивают "почти" многошаговое поведение; однако я не могу представить, чтобы все мои дюжины типов контента были "жестко закодированы" в одном модуле.
Интересно, кто-нибудь достиг такого рода установки или есть какой-то модуль, который может добиться цели. Я хотел бы сохранить тип контента для каждого типа объявлений (веб-мастер теперь используется для интерфейса).
Любая помощь, отправные точки будут оценены.
1 ответ
Для первого шага нам пришлось решить симуляционную задачу. Для этого мы создали то, что было в основном переопределением страницы / node / add (той, которая перечисляет все типы содержимого), что вы и сделали. Чтобы изменить заголовок, проще всего создать функцию yourtheme_preprocess_page(), которая изменяет заголовок, когда URL-адрес / node / add или node / * / edit
Однако: я настоятельно рекомендую перейти на систему, которая использует 1 тип контента для всех списков. Мы создали очень симулированный сайт, и после работы с разными типами контента стало ясно, что иметь 1 тип контента с условно отображаемыми полями было гораздо более разумным решением. Использование категорий для различных типов продуктов, а затем использование модуля "Условные поля" для скрытия и отображения правильных полей работали намного лучше.
http://drupal.org/project/conditional_fields
Вот пример кода для установки заголовка в функции предварительной обработки страницы:
Установка заголовка на странице узла / добавления:
if (arg(0) == 'node' && arg(1) == 'add' && arg(2) == '') {
$vars['title'] = 'Choose an Industry';
$vars['head_title'] = $vars['title'] . " | " . variable_get('site_name', "Industry Trader");
}