【发布时间】:2021-11-08 12:16:32
【问题描述】:
//i would like to use a Drupal function named field_attach_update() for certain nodeids
$node = node_load($nid);
$node->field_fieldname[LANGUAGE_NONE][0]['value'] = 'some value';
field_attach_update('node', $node);
我需要创建一个函数,并将其放在 drupal 文件夹中,并为数千个节点运行它。我有节点 ID,我想更改它们的子字段值。
如何更改上述代码以便仅更改子字段值,并将我需要更改的所有节点作为参数提供?
我想用 drush 来运行函数
并且肯定类似的东西不是一个好的解决方案...(也许我应该在每次保存之间添加一些计时器?我需要更新 20k 节点,而不是让我们托管 drupal 的服务器崩溃)
$node = node_load(123);
$node->field_fieldname[LANGUAGE_NONE][0]['value'] = 'some value';
field_attach_update('node', $node);
$node = node_load(124);
$node->field_fieldname[LANGUAGE_NONE][0]['value'] = 'some value';
field_attach_update('node', $node);
...
【问题讨论】:
-
您可能想要使用batch api 或者创建一个利用views bulk operations module 的函数。投票结束这一点,因为有很多方法可以做到这一点,并且会产生基于意见的答案。另外,我不确定为什么标题说“不保存节点本身”,因为如果您更改字段值,则需要保存节点(除非您直接通过数据库进行)