Как сделать многоступенчатые формы с Drupal, используя различные типы узлов - PullRequest
1 голос
/ 31 января 2011

Я создаю очень простой сайт объявлений. На этом сайте я буду иметь различные типы контента; такие как:

  1. Автомобиль (который имеет поля cck: год, километры, цвет
  2. Дом (который имеет поля cck: количество этажей, сад (да / нет)

Таким образом, каждый «элемент» является типом контента.

Я перечисляю все типы контента в представлении, которое я показываю пользователю, а затем нажимаю на ссылку, чтобы «создать тип контента типа (клик-тип)».

Работает довольно хорошо; но я не могу избавиться от «создать новую машину» в верхней части страницы создания (которая отражает поведение «drupalish»).

Мне бы хотелось, чтобы оно было более удобным, например, в трехступенчатой ​​форме, например:

  1. Выберите категорию
  2. Выберите ваши варианты
  3. Зарегистрируйтесь, чтобы опубликовать новое объявление

Я видел ctools; которые обеспечивают «почти» многошаговое поведение; однако я не могу себе представить, чтобы все мои дюжины типов контента были «жестко закодированы» в одном модуле.

Интересно, кто-нибудь достиг такого рода настройки или есть какой-то модуль, который может добиться цели. Я хотел бы сохранить тип контента для каждого типа объявлений (веб-мастер теперь используется для интерфейса).

Любая помощь, отправные точки будут оценены.

1 Ответ

1 голос
/ 01 февраля 2011

Для первого шага нам нужно было решить симуляционную задачу. Для этого мы создали то, что было в основном переопределением страницы / 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");
  } 
...