【问题标题】:How do I set the value for a CCK Node-reference field automatically when create form submits创建表单提交时如何自动设置 CCK 节点引用字段的值
【发布时间】:2010-09-21 20:21:58
【问题描述】:

我有一个引用不同内容类型 (B) 的单个节点的内容类型 (A)。引用的节点 (B) 可以使用创建此新节点 (A) 的用户的信息以编程方式确定...每个用户只能创建引用的内容类型 (B) 的单个节点,因此该单个节点将始终是从用户创建的内容类型 B 的节点引用。

因为引用的节点总是已知的,我不希望用户必须输入引用值,我想在幕后为他们设置它。我发现了很多关于这样做的线程,但似乎没有一个很清楚或对我真正有用。

任何帮助将不胜感激。

注意:Drupal 6

【问题讨论】:

    标签: drupal drupal-6 cck drupal-node-hook


    【解决方案1】:

    你可以试试:

    function mymodule_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
       switch ($op) {
          case 'insert':
             if ($node->type == 'type_a') {
                $node->field_of_reference[0]['nid'] = 'node reference value';
                node_save($node);
             } 
             break;
       }
    }
    

    这应该将值添加到节点并在创建后保存它。

    http://api.drupal.org/api/function/hook_nodeapi

    注意:您需要创建一个模块来实现这一点。您也可以尝试使用“规则”模块,但我不确定它是否会在没有自定义规则的情况下满足您的要求。但我知道上面的方法会奏效。

    【讨论】:

    • 我还没有尝试过...但这会覆盖默认提交操作,对吗?如果需要节点引用​​字段,是否会在表单到达这一点之前对其进行验证?
    • 不要将表单字段设为必填,这是对提交操作的补充,而不是覆盖。
    • 这个解决方案对我有用,而且相当快。不过要注意的是,在上面的代码中,它应该是 field_of_reference[0]['nid']... 注意 'nid' 而不是 'value'
    【解决方案2】:

    无需任何编程 - 使用“规则”模块、事件 - 节点更新、操作 - 将字段设置为某个值。

    【讨论】:

    • 我仍然需要一些编程来获取节点引用字段的值。您可以将 PHP sn-ps 与 Rules / Action 模块一起使用吗?我假设你可以。谢谢你的提示,我可以试试这个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    相关资源
    最近更新 更多