我在Drupal 7中创建了一个内容类型的自定义字段,我需要在节点外部的页面上的单独区域中显示该字段。
类似于$title变量的工作方式(您可以将其放置在page.tpl.php文件中的位置),我希望能够创建另一个名为$subtitle的变量,该变量将从当前节点调用数据,并允许我在page.tpl.php文件的区域中打印出变量。
我看到过一个视图示例似乎使用视图和块来完成此任务,但这似乎有点过度,我想知道是否有更简单的方法
有一种更简单的方法,您需要记住,尽管不是每个页面都是节点页面,也不是每个节点页面都具有正确的内容类型,所以您应该有所选择。只需将此添加到主题的template.php文件中:
function mytheme_preprocess_node(&$vars) {
$node = $vars['node'];
if ($node->type == 'my_type') {
$vars['subtitle'] = $node->field_my_field[LANGUAGE_NONE][0]['value'];
}
}
然后在page.tpl.php
中,你应该这样做:
if (isset($subtitle)) :
echo $subtitle;
endif;
确保在template.php中实现钩子后清除缓存(admin/config/development/performance),否则Drupal不会拾取它。