如何获取cck自定义字段的值和设置值
问题描述:
我知道这可能是一个愚蠢的问题,但我有一个字段说a和b,现在如何获取值并为a和b设置值。 现在我的代码是这样的..如何获取cck自定义字段的值和设置值
$n = node_load($node->id);
$n->title;
我正在结题,我想知道如何获得并为a和b,请设置的值,如果我设定的值,并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
密钥可能需要根据该字段保存(例如的FileField将持有fid
(文件号)文件的其持有这样相应地调整数据的类型来改变。
而且LANGUAGE_NONE
可能需要更换通过所需的语言代码,如果您使用Drupal 7版本。
答
你的问题有点令人困惑,因为你永远不会解释什么是和是什么。但访问一个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);