1

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

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

……

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

4

1 回答 1

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);

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

于 2013-03-02T12:23:28.277 回答