我正在尝试在Drupal 7.26网站中实现酒店预订功能。客户将从列表页面中选择酒店,然后他们将选择酒店内的房间。
我决定使用UberCart 3作为我的预订机制。
首先,我将“Hotel”实现为 Ubercart 产品。但是酒店是和房间相连的,每一种房间的价格都不一样。使用产品属性,我将房间类型设计为属性,每种房间类型都有不同的价格。到目前为止一切顺利,但我无法选择任何单个产品属性的多个实例,所以我放弃了使用产品属性。
然后我决定采用这种不同的方法。我决定使用字段组将房间类型信息保留在酒店产品类型中。
以下是它在添加内容页面中的外观:
使用一些视图模板,我在我的预订页面中管理了这个外观。这种外观正是我的客户想要的(无论如何除了css)。我要预订一个房间的多个实例。
但是,当我单击任何“添加到购物车”按钮时,Drupal 不会检测到选择了哪种房间类型。我修改了添加到购物车表单的渲染标记(使用 tpl 文件),并为每个添加到购物车按钮添加了一个名为 roomtype 的隐藏字段。所以对于第一个按钮,roomtype = 'double',对于第二个按钮,roomtype = 'single'。
我的想法是
- 使用hook_uc_add_to_cart,
- 然后处理这个房间类型值,并且
- 然后计算该房型的价格,
- 然后更新购物车商品的价格,
- 然后重定向到购物车页面。
但是 hook_uc_add_to_cart 只提供数量、节点 ID 和数据变量。这些都没有给我房间类型隐藏字段的值。
如何使用 uc_add_to_cart 挂钩中的隐藏字段?