Drupal WebForm 模块:创建商品订购表单
让我们回到之前课程中创建的商品目录。目录已经成功填充并正常显示,但通过联系表单下单相当不便——需要复制商品名称和商品代码,然后再粘贴到表单中填写信息。现在我们来创建一个能简化下单流程的表单。为此,我们需要使用 Webform 模块,该模块用于在 Drupal 中创建自定义表单。通过此表单,我们将传递商品名称和数量。如果你还需要传递商品代码,可以使用类似的方法。
下载并安装 Webform 模块。
安装后,系统中会出现一个新的内容类型 Webform。创建一个 Webform 类型的内容,并命名为 商品订购表单(或任意你喜欢的名称)。创建完成后,你将被重定向到该 Webform 的配置页面。
我们需要为商品名称和数量创建两个字段,因此添加两个 textfield(文本字段)。
在“商品名称”字段中填写 %get[product]
在“数量”字段中,将默认值设置为 “1”。
此外,还应添加一个用于客户邮箱的文本字段(text field)和一个用于客户留言或特殊要求的文本区域(text area)。
%get[product]
类似于 PHP 变量 $_GET['product']
,用于从 URL 获取参数值。
表单准备就绪后,我们需要创建一个指向该表单的链接,并为链接添加参数 product
,用于传递商品名称。我们将此链接放入一个独立的区块中,并将其显示在每个商品节点的底部。
接下来的操作需要启用内置模块 PHP filter,它允许在区块或内容中直接插入 PHP 代码。启用后,你会看到新的输入格式 “PHP code”。
创建一个新的区块,并选择输入格式 “PHP code”。在区块文本中插入以下代码:
<a href="<?php print base_path(); ?>node/6?product=<?php print drupal_get_title(); ?>">订购商品</a>
其中 node/6
是商品订购表单的节点地址。
drupal_get_title()
函数返回当前节点的标题,在这里标题即为商品名称;base_path()
函数返回网站的根路径(例如 drupalbook.org/)。接下来,将此区块放置在 “内容 (Content)” 区域中,并在 PHP 模式下设置区块的可见性条件如下:
$types['tovar'] = 1; $match = false; if ((arg(0) == 'node') && is_numeric(arg(1))) { $node = node_load(arg(1)); $match = isset($types[$node->type]); } return $match;
其中 tovar
是商品内容类型的机器名称。
这样,我们的商品订购表单就制作完成了。