Тип контента Drupal (Ресторан) Дизайн - PullRequest
6 голосов
/ 02 декабря 2009

У меня есть один тип контента Ресторан. Для каждого ресторана я бы хотел записать свое меню.

Пример данных будет выглядеть так:

Напитки

  • Кокс $ 4,99
  • Минеральная вода $ 2.99

Коктейль

  • Голубая лагуна $ 9,99

    (X в сочетании с Y и т. Д.)

  • Красный сапфир $ 9.99

    (еще один Х, смешанный с бла)

Паста

  • Классический Болоньез 13,69

    (макароны по вашему выбору, смешанные с нашим домашним фирменным соусом болоньез)


Как видите, меню состояло из нескольких компонентов: категории, название меню, описание, цена. Было бы также неплохо, если бы мы могли также переставлять категории (некоторые рестораны предпочитают, чтобы их напитки отображались перед их основным курсом, а другие предпочитают обратное).

  1. Как бы вы порекомендовали дизайн типа контента?
  2. Если использовать ссылку на узел, есть ли какой-нибудь простой способ / модуль, позволяющий мне редактировать меню прямо из формы редактирования ресторана? (Может быть, некоторые дополнительные вкладки для меню)

Ответы [ 4 ]

4 голосов
/ 04 декабря 2009

РЕСТОРАННЫЙ тип контента. Поля для названия компании, служебного адреса, телефона, факса, веб-сайта, электронной почты, мгновенных сообщений, твиттера, владельца бизнеса, делового контакта (например, менеджера), описания ресторана, логотипа, ссылки на местоположение на карте Google (или для реализации модулей местоположения и gmap) и т. Д. Может быть, использовать пятизвездочный модуль для включения пользовательских рейтингов ресторанов.

FOOD hiearchical таксономия (для этого нужен модуль). К категориям продуктов питания относятся напитки (алкогольные, безалкогольные и т. Д.), Супы, салаты, завтраки, обеды, ужины, десерты, закуски, сэндвичи, морепродукты и т. Д.

Тип содержимого FOOD. Поля для поля ссылки на узел с именем РЕСТОРАНА, чтобы их меню были построены и организованы правильно, выбор иерархической таксономии FOOD, название еды (McRib, Whopper, Bloomin Onion и т. Д.), Цена, варианты приготовления (средний, хорошо сделанный и т. Д.). ), изображение (я) еды и дополнения, которые можно комбинировать с этим блюдом, следует либо выбрать параметры списка, либо ссылки на узлы на другие типы содержимого пищи (картофельное пюре с этим?)

Что касается изображений, используйте imagecache, чтобы сгенерировать несколько разных полезных размеров всех фотографий, чтобы вы могли миниатюрные миниатюры, изображения среднего размера и великолепные картинки блюд в натуральную величину.

Отображение на CSS, которое выглядит как меню. Посмотрите на сайты национальных ресторанов, таких как Chilis.com, чтобы увидеть, как они это делают. Предоставьте ссылки меню условий таксономии продуктов питания для каждого ресторана, а также просмотр ресторанов с открытыми фильтрами, чтобы пользователи могли легко находить рестораны по типу, расположению, рейтингу звезд и т. Д.

Звучит как забавный проект. Я хотел бы увидеть пример из практики, когда вы закончите.

3 голосов
/ 03 декабря 2009

То, как я бы это сделал, вероятно, будет выглядеть так:
Заметьте, я привык к разработке Drupal, поэтому я смог бы довольно быстро сделать многие из этих вещей, поскольку в последнее время я делал нечто подобное. Это может быть не лучшим выбором для вас.

  1. В модуле я бы создал два типа контента для этого: restaurant и menu_item.
  2. Ресторан, вероятно, будет просто названием и другим полем, которое я бы использовал для типов пунктов меню. Я не уверен, как бы я это сделал, все зависит от того, каким будет будущее проекта. Я мог бы выбрать не делать тип контента «Ресторан» или не делать ничего особенного для него, а создать таблицу исключительно для упорядочивания типов пунктов меню.
  3. Большинство типов содержимого элемента меню можно сделать через CCK, но я бы, вероятно, создал таблицу и настраиваемые поля для их упорядочения. (это то, что я делал несколько раз, поэтому у меня есть фрагмент для создания js перетаскиваемая система упорядочения, например, что делает CCK для упорядочивания полей) . Я мог бы также решить обрабатывать цены и сам, если мне потребуется более эффективный контроль в разных случаях, например, при расчете обмена и т. Д.
  4. Для категорий, которые я бы использовал таксономию (использование таксономии дает много дополнительных бонусов, таких как SEO).
  5. Я бы использовал ссылку на узел для привязки пунктов меню к любому меню, в котором они должны быть.
  6. Остальные поля пунктов меню - это просто текстовые поля, которые CCK будет хорошо обрабатывать.
  7. Я бы использовал node_api для извлечения пунктов меню для узлов ресторана, чтобы при их отображении представление узла ресторана было бы отображением меню (Если это основная функция, иначе я бы сделал вкладку для меню и сохраняйте детали ресторана на узле вида).
  8. С помощью некоторого form_alter я бы создал систему заказов, которая подключалась бы к любой системе, которую я выбрал для упорядочивания категорий.
  9. Я мог бы позволить администраторам изменять порядок расположения самих пунктов меню на дисплее узла или создавать для него вкладку. Зависит от того, что клиент хотел бы.

Это немного сложный для разработчиков, так как многие из этих вещей должны быть закодированы. Вы можете пойти очень далеко, просто используя cck и views, но я бы предпочел создать модуль для этого. Причина в том, что, если клиент захочет изменить это через полгода или получить дополнительные функции, мне может быть очень трудно реализовать его. Интеграция с cck и views может быть очень сложной и трудоемкой, поэтому использование немного больше времени сейчас сделает ее более гибкой и расширяемой. Я также делал разные вещи, которые имеют некоторые общие основания, так что я мог бы написать много кода, который я хорошо знаю, и просто настроить его здесь и там для некоторых вещей. Это также отчасти является причиной того, что я пошел по этому пути, так как использование только cck и views не сэкономило бы мне столько времени

1 голос
/ 01 апреля 2010

Первой идеей, которую мне нужно было сделать, может быть что-то вроде следующего:

  • Тип пищи с указанием: название (название), описание (тело) и цена
  • Содержание ресторанатип с несколькими полями ссылки на узлы питания
  • Словарь, связанный с продуктами питания с такими терминами, как напитки, коктейли, макаронные изделия и т. д. (и я вполне уверен, что есть модуль, позволяющий определять веса терминов таксономии)

Таким образом, вы можете хранить свои данные.

Для отображаемой части вы можете использовать:

  1. (лучший подход) пользовательский нод-ресторан.tpl.php, который создает отформатированную страницу, показывающую продукты, классифицированные по термину таксономии (я уверен, что у вас есть прямой доступ к ссылочным узлам через переменные шаблона. Я собираюсь проверить это и сообщить вам)
  2. (может быть сделано через панель администратора) Представление в блоке, размещенном в области «содержимого», показывающее ссылочные узлы, отформатированные в виде таблицы, сгруппированной по термину таксономии в словаре «Категория продуктов».Вы можете получить текущий nid узла (используется для фильтрации) с помощью аргументов.

Я рекомендую первый вариант, поскольку он более соответствует стандартам, быстрее выполняется и может избежать некоторых возможных проблем, которые могут возникнутьиз просмотров + преградить путь.

1 голос
/ 06 декабря 2009

Я должен был сделать что-то очень похожее на это. я решил это с панелями, представлениями и cck. Я создал тип узла «ресторан» и тип узла «menu_item». таксономия menu_item устанавливается с использованием определенного словаря. я использовал панели, чтобы отобразить меню для путей название ресторана / меню, затем просмотры + cck для отображения пункты в меню (я использовал ссылки на узлы, чтобы связать элементы с ресторанами). затем я сгруппировал представление по таксономии: термин field.

...