Tim*_*Tim 2 drupal-6 drupal-fapi drupal-modules
我们将销售订单从会计系统导入Drupal 6站点.
我们设置了一个名为orders的内容类型.
我想为我们的运输提供商建立一个运输模块(目前还没有).
我理解如何构建"块"模块和"内容"模块.
构建模块的最佳方法是什么,该模块将出现在我们的订单节点的底部,这些模块提供了他们需要完成的表单(反过来会处理运送)
如果可能的话,我想在不创建不同内容类型的情况下这样做
如果要将自定义表单附加到每个节点,首先需要(在您的模块中):
$node作为参数传递.然后你必须决定如何将表单插入节点页面(或者正在查看节点),并且有几种方法可以解决它,包括:
$op == 'view')中,您可以获取表单并将其添加到$node->content. MYMODULE_preprocess_node(&$vars)),这样您就可以将它放在自定义node.tpl.php中的任何位置.我想有更多的方法可以解决它(让你的模块生成一个带有表单的块,等等),这取决于你特别需要的.
无论您选择哪种方式,您获得自定义表单标记的方式如下:
<?php
// something like this for hook_nodeapi() way.
$node->content['body']['value']] .= drupal_get_form('my_custom_form_generating_function', $node);
// or something like this for the hook_preprocess_node() way.
$vars['my_custom_form'] = drupal_get_form('my_custom_form_generating_function', $vars['node']);
Run Code Online (Sandbox Code Playgroud)
如果您的表单生成函数确实接受$ node作为参数,那么您需要使用PHP的func_get_args()或$node在签名中显式声明参数:
<?php
function my_custom_form_generating_function($form_state, $node) { }
Run Code Online (Sandbox Code Playgroud)
并且要明确:
...构建一个出现在我们底层的模块......
Drupal模块不是"出现"的东西.模块是为Drupal站点提供附加功能的扩展.他们可以实现钩子,这些钩子可能会或可能不会最终生成将在您的网站上"显示"的标记.
关于"内容模块"和"块模块":尽管我已经看到术语" 节点模块"指的是提供新内容类型的模块,但任何模块都可以实现任何钩子,从而提供块,内容类型等.