Drupal7将文件字段复制到提交时的另一个节点

时间:2013-03-02 08:28:57

标签: drupal drupal-7 drupal-files

我的内容类型除了其他字段外还包含无限的文件字段字段。在节点保存/提交时,我想为字段中的每个文件创建一个附加节点,并将该文件字段分配给它。我很好用nodeapi钩子并逐步创建节点,但我无法从节点访问文件字段的内容。当我从hook_node_insert中打印文件字段内容时,我得到: ...

 (
    [fid] => 38
    [display] => 1
    [description] => 
    [upload_button] => Upload
    [remove_button] => Remove
    [upload] => 
    )

...

不是我通常会看到的格式化和继续字段。我怀疑是我可以从表单中以某种方式访问​​它并在修改后执行表单提交,但我不确定如何执行此操作并且它可能不是最好的方法。如果您对此有任何提示,请告诉我,非常感谢。

1 个答案:

答案 0 :(得分:1)

因为我们已填充[fid],所以我们可以使用file_load($fid)来加载文件对象。然后,您可以将此文件对象强制转换为数组,然后将其附加到新创建的节点的文件字段中。

遍历数组并遇到您遇到的每个$fid ..

$file = file_load($fid);    
$new_node= new StdClass();
$new_node->type = 'image';
$new_node->language = LANGUAGE_NONE;
node_object_prepare($new_node);

// add additional data about new node.

$new_node->field_custom_files[LANGUAGE_NONE][] = array($file);

node_submit($new_node);
node_save($new_node);

我没有对此进行测试,但如果您遇到任何问题,请告诉我。