我创建了一个自定义模块,并使用hook_block以编程方式创建一些块。
我的问题是如何访问字段值,包括模块中当前节点的CCK字段?
我基本上想从CCK字段中获取值,并在为该页面构建块时使用该值。
答案 0 :(得分:3)
进入当前节点是后路的一个尴尬的痛苦。标准做法是做这样的事情:
if (arg(0) == 'node' && is_numeric(arg(1)) && arg(2) == '') {
$node = node_load(arg(1));
// Collect output.
}
arg()
将元素从Drupal路径中拉出来。由于所有节点(无论路径别名可能显示什么)都出现在节点/#上,通过检查“节点”并且第二个元素是数字,您可以很好地保证将手放在节点上。检查第三个路径元素可以避免在节点编辑表单和挂起特定节点的其他页面上进行处理。
CCK值被加载到节点中,通常看起来像这样:
// Text field. Structure also works for number fields.
$text = $node->field_my_text_field[0]['value']
// Node Reference field.
$nref = $node->field_my_nref_field[0]['nid']
// User Reference field.
$uref = $node->field_my_uref_field[0]['uid']
“0”数组元素指定字段的 delta 。任何给定的字段实际上都可以处理多个值,即使您将字段限制为单个值,CCK中的数组结构也会假定这种可能性。
答案 1 :(得分:0)
在Drupal 6中有一个内置的Drupal函数来获取节点对象。
if ($node = menu_get_object()) {
…
}