跳转到主要内容

在 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; ?>

 

文章分类