【发布时间】:2011-10-05 21:19:40
【问题描述】:
我知道这可能是一个愚蠢的问题,但我有一个字段说 a 和 b,现在如何获取值并设置 a 和 b 的值。 现在我的代码是这样的..
$n = node_load($node->id);
$n->title;
我正在获取节点标题,我想知道如何获取和设置 a 和 b 的值,如果我设置了 a 和 b 的值,它将不会被保存使用
node_save($n);
??
【问题讨论】:
我知道这可能是一个愚蠢的问题,但我有一个字段说 a 和 b,现在如何获取值并设置 a 和 b 的值。 现在我的代码是这样的..
$n = node_load($node->id);
$n->title;
我正在获取节点标题,我想知道如何获取和设置 a 和 b 的值,如果我设置了 a 和 b 的值,它将不会被保存使用
node_save($n);
??
【问题讨论】:
这在一定程度上取决于您使用的版本以及您使用的特定字段类型,但类似这样:
// Drupal 6
$n = node_load($node->id);
$n->title = 'A title';
$n->field_my_field_a[0]['value'] = 'A value';
$n->field_my_field_b[0]['value'] = 'B value';
node_save($n);
// Drupal 7
$n = node_load($node->id);
$n->title = 'A title';
$n->field_my_field_a[LANGUAGE_NONE][0]['value'] = 'A value';
$n->field_my_field_b[LANGUAGE_NONE][0]['value'] = 'B value';
node_save($n);
在这两种情况下,当您调用node_save() 时,字段数据将与节点一起保存。
值得注意的是,这两种情况下的0 索引都指向字段中的第一项。如果一个字段有多个值,您可以继续添加到数组中。 value 键可能需要根据字段保存的数据类型进行更改(例如,文件字段将保存其保存的文件的 fid(文件 ID),因此请进行相应调整。
如果您使用的是 Drupal 7 版本,还可能需要将 LANGUAGE_NONE 替换为所需的语言代码。
【讨论】:
您的问题有点令人困惑,因为您从不解释 a 和 be 是什么。但是访问 cck 字段通常如下所示:
$node = node_load($nid);
$field_value = $node->field_name[0]['value'];
如果是多重选择,则偏移量值超过零。您可以使用相同的方法设置值:
$node = node_load($nid);
$node->field_name[0]['value'] = $field_value;
node_save($node);
【讨论】: