You are here

用于不同区块类型的可选模板(drupal4.7)

g089h515r806 的头像
Submitted by g089h515r806 on 星期一, 2008-09-08 09:03

注意:在Drupal 5中,这更简单了。只需要像前文所讲的那样就可以了。

 

方法1

这里所讲的具有一些技巧性,它允许你为特定的区块创建一个单独的block.tpl.php模板。你可以使用区块名称或者区块ID进行控制。下面是一个修改后的block.tpl.php,在前面带了一个条件语句。你所要做的就是编辑module == '[模块名]' 和delta == '[区块名或id]'部分就可以了。

下面是我当前的block.tpl.php,条件里面的区块信息是我站点特有的。如果你想在你的drupal站点上使用它的话,你需要按照前面所说的对其进行修改。这个是在我的站点上,为两个区块加载一个自定义block.tpl.php,你可以根据需要用于,1个,6个等等。对于每个自定义模板,你都需要一个条件语句("if "部分)。

 

<?php
if ( ( $block->module == 'views' && $block->delta == 'Cool Block' ) || ( $block->module == 'node' && $block->delta == '0' ) ) {
    include 'block-custom.tpl.php'; /*load a custom template for those two block IDs */
    return; }
?>
<div class="<?php print "block block-$block->module" ?>" id="<?php print "block-$block->module-$block->delta"; ?>">
  <div class="title"><h3><?php print $block->subject ?></h3></div>
  <div class="content"><?php print $block->content ?></div>
</div>

你需要自己创建一个block-custom.tpl.php,根据需要你可以创建任意多个这样的模板文件。为了在你的Drupal站点上进行测试,你可以复制一份标准的区块模板,将其改名为block-custom.tpl.php,然后对其进行编辑,比如将标题放在最后面而不是最前面,然后查看效果。剩下的就是你的事儿了。你可以在模板中根据需要放置任何想要的东西。

这意味着所有的区块都可以拥有自定义的外观,这是很多人都热切希望的。将这个添加到新的区域功能中,你将拥有100%的自定义区块。

iDonny, nevetsHeine对本文作了审查

 

方法2

JohnAlbin写的

block.tpl.php的内容:

<?php
    $block_module = $block->module;
    // force delta to be alphanumeric
    $block_name = $block_module . '-' . preg_replace('/[^\w]/', '', $block->delta);
    switch ($block_name) {
        case 'menu-2':                // Primary links
        case 'views-CoolBlock':        // a custom Views block named "Cool Block"
            if ( @include("block-$block_name.tpl.php") ) {
                return;
            }
            break;
    }
?>

 

<div class="block block-<?php print $block_module; ?>" id="block-<?php print $block_name; ?>">
<h2 class="title"><?php print $block->subject; ?></h2>
<div class="content"><?php print $block->content; ?></div>
</div>

 

这段代码就有下面的优势:

1.       在id属性中不会有奇怪的字符(比如空格)。

2.       如果没有"block-[module]-[delta].tpl.php"文件的话,也不会引起PHP警告,此时将会使用默认的block.tpl.php代码。

 

方法3

dman写的

在block.tpl.php的最顶部:

<?php
    // allow for unique blocks to have their own phptemplate theme
    if(!empty($block->subject))
      $blockid = 'block-'.strtolower(preg_replace("/[^A-Za-z0-9]+/","-",$block->subject));
    else
      $blockid = 'block-'.$block->module.'-'.$block->delta;

    if (file_exists(path_to_theme() . "/$blockid.tpl.php")) {
      include path_to_theme() . "/$blockid.tpl.php";
      return;
    }
?>

现在你就可以实现block-block-7.tpl.php或者block-login.tpl.php等等模板文件了。

 相关链接:http://drupal.org/node/63757 , Think in Drupal

 

Drupal版本: