6

我有一个内容类型餐厅。对于每家餐厅,我想记录他们的菜单。

示例数据如下所示:

饮料

  • 可乐 $4.99
  • 矿泉水 $2.99

鸡尾酒

  • 蓝色泻湖 $9.99

    (X 结合 Y 等)

  • 红色蓝宝石 $9.99

    (另一个混杂着废话的X)

意大利面

  • 经典肉酱 $13.69

    (您选择的意大利面与我们自制的特色肉酱混合)


如您所见,菜单由几个部分组成:类别、菜单名称、描述、价格。如果我们还可以重新排列类别,那就太好了(有些餐厅可能更喜欢在主菜之前展示他们的饮料,而另一些则喜欢相反)。

  1. 你会如何推荐内容类型设计?
  2. 如果要使用节点引用,是否有任何简单的方法/模块可以让我直接从餐厅编辑表单编辑菜单?(也许菜单的一些附加选项卡)
4

4 回答 4

4

RESTAURANT content type. Fields for business name, business address, phone, fax, website, email, IM, twitter, business owner, business contact (like manager), restaurant description, logo, and google map location link (or implement location and gmap modules) etc. Maybe use five-star module to enable user ratings of the restaurants.

FOOD hiearchical taxonomy (need module for this). Food categories are beverages (alcoholic, non-alcoholic, etc), soups, salads, breakfasts, lunch, dinner, desserts, entrees, sandwiches, seafood, etc.

FOOD content type. Fields for node reference field to the RESTAURANT name so their menu gets built and organized correctly, FOOD hiearchical taxonomy selection, food title (McRib, Whopper, Bloomin Onion, etc.), price, preparation options (medium, well-done, etc.), food image(s), and additions which can be combined with this dish should either be select list options or node references to other food content types (mashed or baked potatoes with that?)

Regarding images, use imagecache to generate several different useful sizes of all pics, so you can tiny thumbnails, medium sized images, and full sized gorgeous pics of the dishes.

Display on CSS that looks somewhat like a menau. Look at national restaurant websites like Chilis.com to see how they do it. Provide menu links of the food taxonomy terms for each restaurant, and a view of restaurants with exposed filters so users can easily find restaurants by type, location, star rating, etc.

Sounds like a fun project. I'd like to see a case study published when you're finished.

于 2009-12-04T16:27:37.420 回答
3

我会这样做的方式可能是这样的:
注意,我习惯于开发 Drupal,所以我可以很快地做很多这些事情,因为我最近做了类似的事情。这可能不是您的最佳选择。

  1. 在一个模块中,我会为此创建两个内容类型,restaurant 和 menu_item。
  2. 餐厅可能只是标题和另一个我将用于菜单项类型的字段。我不确定我会怎么做,这有点取决于项目的未来。我可能选择不创建 Restaurant 内容类型或不对其做任何特殊处理,并创建一个仅用于对菜单项类型进行排序的表。
  3. 大多数菜单项内容类型都可以通过 CCK 完成,但我可能会为它们的排序创建一个表和自定义字段(这是我已经做过几次的事情,所以我有片段用于制作 js 可拖动的排序系统,就像什么CCK 用于排序字段)。如果我需要在不同情况下更好地控制,比如进行汇率计算等,我也可能会选择自己处理价格。
  4. 对于我会使用分类法的类别(使用分类法会带来很多额外的好处,比如 SEO)。
  5. 我会使用节点引用将菜单项绑定到它们需要的任何菜单。
  6. 其余的菜单项字段只是 CCK 可以很好地处理的文本字段。
  7. 我会使用 node_api 来获取餐厅节点的菜单项,这样通过主题化,餐厅节点视图将是菜单的显示(如果这是主要功能,否则我会为菜单创建一个选项卡并保留节点视图上的餐厅详细信息)。
  8. 使用一些 form_alter,我将创建一个订购系统,该系统连接到我选择用于订购类别的任何系统。
  9. 我可以让管理员自己在节点显示中更改菜单项的顺序,或者为它创建一个选项卡。取决于客户想要什么。

这对开发人员来说有点繁重,因为很多这些东西都需要编码。仅使用 cck 和视图就可以走得很远,但我宁愿为此创建一个模块。原因是,如果客户希望在半年内改变它或提供额外的功能,我可能会很难实现它。与 cck 和视图集成可能非常棘手且耗时,因此现在使用一点额外的时间,将使其更加灵活和可扩展。我也做过不同的事情,有一些共同点,所以我可以 C/P 很多我很熟悉的代码,然后在这里和那里调整它。这也是我走这条路的部分原因,因为单独使用 cck 和视图不会为我节省那么多时间

于 2009-12-03T10:44:24.520 回答
1

我不得不做一些与此非常相似的事情。我用面板、视图和 cck 解决了它。我创建了一个节点类型“restaurant”和一个节点类型“menu_item”。menu_item 分类是通过使用特定的词汇表来设置的。我使用面板显示路径餐厅名称/菜单的菜单,然后使用视图+cck 显示菜单中的项目(我使用节点引用将项目链接到餐厅)。然后我按分类:术语字段对视图进行分组。

于 2009-12-06T15:14:16.727 回答
1

我必须这样做的第一个想法可能如下:

  • 食物内容类型:名称(标题)、描述(正文)和价格
  • 具有多个食物节点参考字段的餐厅内容类型
  • 与食物相关的词汇,如饮料、鸡尾酒、意大利面等(我很确定有一个模块可以让您定义分类术语权重)

这样,您可以存储您的数据。

对于显示部分,您可以使用:

  1. (更好的方法)一个自定义的node-restaurant.tpl.php,它创建了显示按分类术语分类的食物的格式化页面(我很确定你可以通过模板变量直接访问引用的节点。我要测试一下并让你知道)
  2. (可以通过管理面板完成)放置在“内容”区域中的块中的视图,显示引用的节点,格式化为按“食品类别”词汇表上的分类术语分组的表格。您可以使用参数获取当前节点 nid(用于过滤)。

我推荐第一个选择,因为它更符合标准,执行速度更快,并且可以避免一些可能来自视图+块方式的问题。

于 2010-04-01T15:43:10.413 回答