2009-12-02 52 views
6

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

的样本数据是这样的:

饮料

  • 可乐                                                $ 4.99
  • 矿泉水                    $ 2.99

鸡尾酒

  • 蓝礁湖                          $ 9.99加入

    (X,其中Y等相结合)

  • 红蓝宝石                      $ 9.99加入

    (另一个X与胡说混合)

面食

  • 经典of博洛尼亚      $ 13.69

    (Pasta的选择与我们自制的特色混合博洛尼亚酱)


正如你所看到的,菜单由几个部分组成:类别,菜单名称,描述,价格。如果我们也可以重新安排类别(一些餐馆可能更喜欢他们的饮料在他们的主菜前显示,而其他餐厅喜欢相反),那也是很棒的。

  1. 你会如何推荐内容类型设计?
  2. 如果是使用节点引用,是否有任何简单的方法/模块允许我直接从餐厅编辑窗体编辑菜单? (也许对某些菜单选项卡其它附加)

回答

3

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

  1. 在模块中,我会为此,餐厅和menu_item创建两种内容类型。
  2. 餐馆可能只是标题和我会用于菜单项类型的另一个字段。我不知道该怎么做,这取决于项目的未来。我可能会选择不设置餐厅内容类型或不做任何特别的事情,并且仅为菜单项类型的排序创建一个表。
  3. 大部分的菜单项内容类型都可以通过CCK完成,但我可能会为他们的订购创建一个表和自定义字段(这是我做了几次,所以我有一些片段让js可以拖动订购系统,比如CCK为订购字段所做的)。我也可以选择自己处理价格,如果我需要更好的控制在不同的情况下,比如做交换计算等。
  4. 对于我使用分类的分类(使用分类标准会给出很多额外的奖金,如SEO) 。
  5. 我会使用节点引用将菜单项绑定到他们需要的任何菜单。
  6. 其余菜单项字段只是CCK可以很好处理的文本字段。
  7. 我会使用node_api来获取餐馆节点的菜单项,所以在主题化的情况下,餐馆节点视图将成为菜单的显示(如果这是主要功能,否则我会为菜单并在节点视图上保留餐厅的详细信息)。
  8. 随着一些form_alter我会创建一个订购系统,连接到我选择用于订购类别的任何系统。
  9. 我可能会让管理员能够更改节点显示中菜单项自身的排序,或者为其创建一个标签。取决于客户想要什么。

这是一个有点开发沉重,因为很多这些东西都需要编码。你可以使用cck和views来走很远的路,但我宁愿为此创建一个模块。原因是,如果客户希望在半年内改变或者增加了一些功能,我可能会很难实现它。与cck和视图集成可能会非常棘手和耗时,所以现在使用一点额外的时间会使它更加灵活和可扩展。我也做了不同的事情,有一些共同的理由,所以我将能够C/P很多代码,我知道很好,只是调整它在这里和那里的一些这些东西。这也是我走这条路线的部分原因,因为单独使用cck和views并不会为我节省很多时间

+0

我喜欢这个建议,尽管我不会去追求它,除非项目的其他部分明确地需要将菜单的不同部分分开(但这是一个开发哲学的问题,所以我不会为此而低估)解决方案si以任何方式不好!)。我特别喜欢第4点,因为它是真正的分类学带来了几个设计优势 - 除了googletorp已经提到的SEO点)。 – mac 2009-12-03 12:41:54

+0

@mac采取的路线取决于项目。我的一些项目的定义非常明确,在这种情况下,我会知道是否需要所有这些,或者我会使用更少的代码更简单些。但如果这是一个随着时间的推移将会在不同地区延伸的网站,我宁愿让事情更受控制。但正如你所说,这是一个发展哲学问题。我偏爱这种策略的一个原因,也可能是我在过去的一两个月里一直在做的工作,这些工作还没有用Drupal :) – googletorp 2009-12-03 13:06:48

4

RESTAURANT内容类型。企业名称,公司地址,电话,传真,网站,电子邮件,即时消息,Twitter,企业主,业务联系人(如经理),餐厅描述,徽标和谷歌地图位置链接(或实现位置和gmap模块)等字段。也许使用五星级模块来启用餐厅的用户评级。

食物层次分类法(为此需要模块)。食物类别是饮料(含酒精,不含酒精等),汤,沙拉,早餐,午餐,晚餐,甜点,主菜,三明治,海鲜等。

食物内容类型。节点参考字段的餐馆名称字段,以便他们的菜单被建成并正常组织,食品hiearchical分类选择,食品标题(McRib,弥天大谎,Bloomin洋葱等),价格,准备选项(中,做得好的,等),食物图像以及可以与这道菜结合的添加物应该是选择列表选项还是节点对其他食物内容类型的引用(沾满土豆或烤土豆的那种?)

关于图像,请使用imagecache来生成几个不同的有用的大小的所有图片,所以你可以微缩缩略图,中等大小的图像,和全尺寸华丽的菜肴图片。

在CSS显示颇像menau。看看像Chilis.com这样的国家餐馆网站,看看他们是如何做到的。提供各餐厅,和餐厅暴露过滤器视图中的食品分类术语的菜单链接,因此用户可以很容易地找到类型,地点,星级等餐馆

听起来像一个有趣的项目。我希望看到您完成后发布的案例研究。

+0

有人标记了这个-1?没有用? 任何想法为什么?我认为这很有用,我提供了一个解决方案来回答他们问题的所有部分。 也许我错过了什么?请告诉我我做错了什么? 我认为接受答案的人应该被迫解释为什么他们这样做,提供建设性的反馈,为什么给出的答案是没有帮助的。 否则,它必定是一个丑陋的回答者之间的竞争意识,就像亚马逊的作家在审查竞争对手的书籍时一样,让自己看起来更好。 有没有一个wiki来讨论这个问题? – 2009-12-07 20:20:40

+0

有http://meta.stackoverflow.com来讨论这类问题。是的,目前已经有一个讨论正在进行中,但目前的结果似乎是:不,系统是好的。我的解决方案也被低估了,因为有人不喜欢它的方法,虽然 - 和你一样 - 从技术上讲绝对是合理的:我认为在不同风格/方法/哲学方面有时会得到低估是正常的。如果答案中有真实的错误/错误信息 - 但是 - 有人会在一分钟内让你知道! ;) – mac 2009-12-08 21:53:54

+0

伟大的解决方案!我喜欢它很多:) +1 – giorgio79 2012-03-30 14:15:00

1

我不得不这样做与此非常相似的东西。我用面板,视图和cck解决了它。 我创建了一个节点类型'restaurant'和一个节点类型'menu_item'。 menu_item分类法是通过使用特定词汇表来设置的。 我使用的面板来显示路径餐厅名/菜单中的菜单,然后视图+ CCK显示在菜单中的项目 (ⅰ用于节点referrences项链接到餐馆)。然后我按分类学术语字段对视图进行分组。

1

我不得不这样做可能会是如下的第一个想法:

  • 食品内容类型有:姓名(名称),描述(身体)和价格
  • 餐厅内容类型与多种食物节点-reference领域
  • 词汇相关联的食品与饮料一样,鸡尾酒,意大利面食,术语.. (我敢肯定有,让你定义分类术语权重模块)

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

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

  1. (更好的方法)的自定义节点restaurant.tpl.php,创造出由分类项归类食品格式化的页面(我敢肯定你必须通过模板变量直接访问引用的节点..我要测试,让你知道)
  2. (可以通过管理面板来完成)在放置在“内容”区域块显示引用的观点节点,按照“食品类别”词汇表上的分类术语进行分组,格式化为表格。您可以通过使用参数来获取当前节点的nid(用于过滤)。

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

+0

(可能最好的方法是编写一个节点模块,通过创建一个多值的AHAH表单,包含category/title/price/description,但我想这不是您寻找的一种解决方案..) – redShadow 2010-04-01 15:47:40

+0

..并且通过使用节点引用,您也可以享受共享食物定义的优势(例如,如果红葡萄酒的价格发生变化,您可以自动更新所有菜单,不只是一个..)。 – redShadow 2010-04-01 15:49:14