2012-06-09 95 views
3

这是我目前的设置。Drupal 7 - 添加块到页面

我用下列区域创建了一个新的自定义主题。

regions[header] = Header 
regions[content] = Content 
regions[footer] = Footer 

page.tpl.php中

<div id="Header"> 
     <div class="row"> 
      <div class="span12" style="text-align:center;padding-top:20px;"> 
       <div><a href="/"><img src="logo.png" width="150" height="150" alt="KT Logo"></a></div> 
      </div> 
     </div> 

     <div class="row">&nbsp;</div> 
    </div><!-- /Header --> 

    <div id="Navigation"> 
     <div class="row" style="text-align:center;"> 
      <div class="span12" style="text-align:center;"> 
       <?php print render($page['header']); ?> 
       <hr class="style-two"> 
      </div> 
     </div> 
    </div><!-- /Navigation --> 

    <div id="Content"> 

     <div class="row">&nbsp;</div> 

     <div class="row"> 
      <div class="span8 offset1"> 
       <h1><?php print $title; ?></h1> 
      </div> 
     </div> 

     <div class="row">&nbsp;</div> 

     <div class="row"> 
      <div class="span10 offset1"> 
       <?php print render($page['content']) ?> 
      </div> 
     </div> 

     <div class="row">&nbsp;</div> 
    </div><!-- /Content --> 

    <footer> 
     <div class="row"> 
      <div class="span12"> 
       <img src="separator.png" alt="separator"> 
       <?php print render($page['footer']); ?> 
      </div> 
     </div> 
     <div class="row">&nbsp;</div> 
    </footer> 

</div><!-- /container --> 

这一切运作良好,我已经创建了几个基本的网页罚款。问题出现在我想在页面上有2个块的自定义“内容类型”,其中一个包含左侧的主要内容,另一个包含右侧的侧栏。现在我不完全了解这些地区的工作方式。

我想要的东西像sidebar_second效果,但我不知道它将如何设置与我的宽度。这是我的地区的屏幕截图。 http://goo.gl/XFVnl

所以我想我需要改变我的内容区域的显示方式,以便它可以包含侧栏区域?

感谢所有帮助

+0

感谢您的帮助,我现在了解更多。我可以为不同的结构化页面创建多个page.tpl.php文件。这让我感到困惑。这张照片也帮了我。 [链接](http://goo.gl/OFZgr) –

回答

1

内容类型特定模板通常是node.tpl.php文件,页面模板是page.tpl.php文件。当您使用node.tpl.php

首先,所有的区域添加到他们的.info文件主题

page.tpl.php中的文件已经被包括在内。这直接影响块管理页面中哪些区域可用。 没有必要让您定义的所有区域(在.info文件中)出现在所有page.tpl.php文件中。

由于您在page.tpl.php文件中有3个区域,请将其保留并继续工作。 但是要覆盖特定节点类型的page.tpl.php,您必须在主题的template.php文件中设置它们。你简单的“问”Drupal使用这个page.tpl.php文件是节点类型是一个“页面”(例如)。

添加到您的template.php文件。如果节点类型是(机器名称)是“book”,Drupal将不会查找页面 - node-book.tpl.php文件以获得替代page.tpl.php文件。

<?php 
function themename_preprocess_page(&$variables) { 
    if (!empty($variables['node'])) { 
    $variables['theme_hook_suggestions'][] = 'page__node_' . $variables['node']->type; 
    } 
} 
?> 

现在你可以在page.tpl.php中的文件复制到页面 - 节点 - 【类型】.tpl.php,使您的变更。无论你放在这个文件中什么都将用于该节点类型的页面模板。 (注意:“页面”和“节点”之间有2个连字符,以及“节点”和“[类型]”之间的连字符) 如果看不到更改,请记住清除缓存。

1

我认为第一步是在你的.module文件,即使它不会在每一页上显示的其他地区一起申报sidebar区域。

在你的页面模板,你可以检查(伪代码)

if (isset($page['sidebar'])) { 
    <div sidebar float left theme this how you want> 
    print render($page['sidebar']); 
    </div> 
} 

现在,当你创建你可以指定它显示了上或特定内容类型,它显示一个特定的路径块继续。上面的代码将检查页面是否在您的侧边栏中有一个块并进行相应的渲染。

如果您在drupal堆栈交换上发布信息,您将更有可能获得答案。 https://drupal.stackexchange.com/