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

时间:2011-10-05 21:19:40

标签: php drupal drupal-6 cck

我知道这可能是一个愚蠢的问题,但我有一个字段说a和b,现在如何获取值并设置a和b的值。 现在我的代码是这样的..

$n = node_load($node->id);
$n->title;

我正在获取节点标题,我想知道如何获取和设置a和b的值,如果我设置a和b的值将使用

保存

node_save($ n)的;

...

2 个答案:

答案 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);