如何获取CCK自定义字段的值和设置值


how to get value and set value of cck custom field

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