1. 论坛系统升级为Xenforo,欢迎大家测试!
    排除公告

添加regions到node.tpl.php

本帖由 laogui2008-02-07 发布。版面名称:源码讨论

  1. laogui

    laogui Administrator
    管理成员

    注册:
    2005-08-30
    帖子:
    15,216
    赞:
    35
    作者:Evance | 源文: Add some regions to node.tpl.php for drupal
    本来是想翻译drupal Theme developer 的Regions in PHPTemplate的.
    后来仔细看了看,好像有些部分比如说How to define custom regions已经相关的中文文章,比如说是Joe的regions.
    但是要说明的是,上面的方法不适应于添加regions到node.tpl.php和comment.tpl.php,所以写了这篇文章哈。
    以我的网站为例,我在为node页面添加一个regions(不是block喔。) 示例网址:
    http://www.evance.name/node/942
    我想在node内容的右面添加一个regions,取名为node_inner_right
    [​IMG]
    打开 /theme/your_theme/template.php 文件,如果你使用的theme没有这个文件template.php的话,手动建立一个。
    定义一个function _phptemplate_variables() 函数,如果它已经存在的话,就直接使用它。 加入如下代码:
    function _phptemplate_variables($hook, $variables) { // loead the regions only for full views if($hook == 'node' && !$vars['teaser']) { //load region content assigned via blocks foreach(array('node_inner_right') as $region) { $variables[$region] = theme('blocks', $region); } foreach(array('node_inner_bottom') as $region) { $variables[$region] = theme('blocks', $region); } } return $variables;}
    ok,现在去/admin/build/block,就可以发现,多了一个名为“Node inner right”的regions。现在在那一个regions里面增加block了,比如说偶增加了一个google_ad-node inner right
    [​IMG]
    增加regions了,我们最终要让它显示在node里相应的位置。
    因此,打开node.tpl.php,找到:


    增加显示node_inner_right的代码:




    至于是把regions放到$content前还是后,css怎么写,这个又是另外一个范畴了。本文介绍的仅仅是如何添加一个regions到node.tpl.php里面。


    来源