我知道这可能是一个愚蠢的问题,但我有一个字段说a和b,现在如何获取值并设置a和b的值。 现在我的代码是这样的..
$n = node_load($node->id);
$n->title;
我正在获取节点标题,我想知道如何获取和设置a和b的值,如果我设置a和b的值将使用
保存node_save($ n)的;
...
答案 0 :(得分:2)
这取决于您使用的版本以及您正在使用的特定字段类型,但有类似的内容:
// 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
可能需要替换为所需的语言代码。
答案 1 :(得分:0)
你的问题有点令人困惑,因为你从来没有解释过什么是什么。但访问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);