在 node 中显示自定义 custom region Drupal 6
碰见自定义region的问题,找了些资料,简单意译的。没有尝试,写出来分享。
增加自定义的region,在drupal6中很简单,比如 http://drupalchina.org/node/4979 ,不过这样自定义的region只能在 page.tpl.php中使用。如果要显示在node中,需要添加一些代码。
如果要在每一个story nodes上,添加一个新的region,而且只需要这个region在full node的浏览下显示,而不需要在teaser的浏览下出现。这里使用的主题名称为: thenewtheme 。
1。在风格的 .info 添加新的region。选择合适的名称,比如 node_advert_top 其变量就为 $node_top_advert。添加 regions[node_advert_top]= node advert top 注意,如果添了新的region则需要把系统默认的region添加上去;由于主题缓存,所以要在后台重新保存一下主题,新的region才会在区块设置中出现。 参见: http://drupal.org/node/171205#regions
2。 在模板中使用添加的region
新的region变量只对 (page.tlp.php) 生效,如果在特定的node显示,就需要把新的region变量$node_advert_top添加到 node.tlp.php模板中。这里使用 preprocess_node() 函数,打开 template.php 文件,创建函数
thenewtheme_preprocess_node() , 然后把新的region赋予 $vars 变量。
<?php
function thenewtheme_preprocess_node(&$vars, $hook) {
$vars['node_advert_top'] = theme('blocks', 'node_advert_top');
}
?>
第2步,还有一个方法,使用不同的函数,参见: http://drupal.org/node/237391 , 在template.php 文件中加入
<?php
function phptemplate_preprocess_node(&$vars) {
if (!$vars['teaser']){
foreach (array('belowPost') as $region) {
$vars[$region] = theme('blocks', $region);
}
}
}
?>
3。然后把这个region放入您需要出现的地方。
打开 node模板文件 (node.tlp.php) 把region放入您需要出现的地方。注意,只在 story nodes出现,而且只有在阅读全文的时候出现。下面第一行if语句就做了这样的限制。
<?php
if ($node_advert_top && !$teaser && $node->type == 'story'):
?>
<?php
print $node_advert_top;
?>
<?php
endif;
?>