案例如下:例如,我有一个带有“data_field”字段的自定义内容类型。我想在侧边栏上有一个块,可以正确处理和显示这个“data_field”字段的数据。如何使用 Drupal API 访问它?
PS 我知道这个问题可以通过 Views 以某种方式解决,它具有特定于内容的显示能力,但我对它通过 API 实现的方式很感兴趣。
案例如下:例如,我有一个带有“data_field”字段的自定义内容类型。我想在侧边栏上有一个块,可以正确处理和显示这个“data_field”字段的数据。如何使用 Drupal API 访问它?
PS 我知道这个问题可以通过 Views 以某种方式解决,它具有特定于内容的显示能力,但我对它通过 API 实现的方式很感兴趣。
使用内容类型的默认 Drupal 设置呈现字段:
$n = node_load($nid_of_content);
$n = node_view($n);
print render($n['field_somevalue']);
您也可以指定节点显示格式,例如
$n = node_view($n, 'teaser');
如果您想以不同的方式操作字段内容,请使用原始字段值:
$n = node_load($nid_of_content);
$value_you_want = $n->field_data_field_somevalue['und'][0]['value'];
这假设您没有使用任何语言/翻译功能 - 'und' 代表“未定义”并声明没有为节点显式设置语言。
如果字段可以包含多个值,则遍历 ['und'][0]['value'] 到 ['und'][x]['value']
上面的代码显示了大多数字段类型的原始值。在开发过程中使用 print_r($n->field_somevalue) 找出哪些值可供您使用;这取决于字段类型。例如,文件类型为您提供“uri”(以及其他)而不是“值”,文本字段也具有应用了输入格式过滤的“安全值”,长文本字段将具有“摘要”和“安全摘要”等。