我知道这可能是一个愚蠢的问题,但我有一个字段说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);