2011-10-05 114 views
0

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

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

我正在结题,我想知道如何获得并为a和b,请设置的值,如果我设定的值,并b将不会被保存使用

node_save($ n);

??

回答

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密钥可能需要根据该字段保存(例如的FileField将持有fid(文件号)文件的其持有这样相应地调整数据的类型来改变。

而且LANGUAGE_NONE可能需要更换通过所需的语言代码,如果您使用Drupal 7版本。

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); 
相关问题