我的内容类型除了其他字段外还包含无限的文件字段字段。在节点保存/提交时,我想为字段中的每个文件创建一个附加节点,并将该文件字段分配给它。我很好用nodeapi钩子并逐步创建节点,但我无法从节点访问文件字段的内容。当我从hook_node_insert中打印文件字段内容时,我得到: ...
(
[fid] => 38
[display] => 1
[description] =>
[upload_button] => Upload
[remove_button] => Remove
[upload] =>
)
...
不是我通常会看到的格式化和继续字段。我怀疑是我可以从表单中以某种方式访问它并在修改后执行表单提交,但我不确定如何执行此操作并且它可能不是最好的方法。如果您对此有任何提示,请告诉我,非常感谢。
答案 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);
我没有对此进行测试,但如果您遇到任何问题,请告诉我。