如何在主题中创建自定义区域?


Answers:


68

您可以在主题.info文件中定义区域。请参阅:.info文件的结构

然后,您需要将相关的模板标记放入page.tpl.php文件中。

因此,例如,如果您sidebar在主题.info文件中定义了区域,则可以将:添加<?php print render($page['sidebar']); ?>到page.tpl.php中的相关位置。


6
如果您的主题没有page.tpl.php文件,则可以将默认值从系统模块复制到您的主题中,然后修改该副本。
Mikey P

5
Omega不需要page.tpl.php部分,只需在.info和CLEAR CACHES中声明该区域。
Capi Etheriel'2

20

另一点:不要错过必填区域!

regions[content] = Content
regions[help] = Help
regions[page_top] = Page top
regions[page_bottom] = Page bottom

有关更多信息,请访问http://drupal.org/update/themes/6/7#closure

为了澄清这一点:如果定义自己的区域,则需要定义所有正在使用的区域,包括必需的区域。换句话说,您不能仅定义其他区域:如果定义任何区域,则必须全部定义它们。


9

为Drupal 7主题创建区域与为Drupal 6区域创建区域相同。Drupal 7与先前版本之间的区别本质上是:

  • 没有mytheme_regions()像在Drupal 5中那样使用函数来定义区域,而是在mytheme.info中使用regions[]指令来定义区域,而Drupal 6主题也是如此。
  • 使用Drupal函数渲染区域render(),而不是打印变量的内容。

默认的Drupal 7区域是以下区域:

regions[header] = Header
regions[highlighted] = Highlighted
regions[help] = Help
regions[content] = Content
regions[sidebar_first] = Left sidebar
regions[sidebar_second] = Right sidebar
regions[footer] = Footer

现在,Drupal 7的核心主题包括一个名为“突出显示”的区域,该区域使用与Drupal 6中的任务声明区域相同的显示;它们还包含一个名为“ help”的区域,默认情况下,该区域与$helpDrupal 6使用的变量内容相同。


4

主题区域在主题.info文件中定义-请参阅docs。只需添加一条线regions[corner] = Corner即可获得Corner区域。

然后,您需要编辑page.tpl.php文件,并添加<php print render($corner); ?>您要显示区域的位置。如果您的主题没有page.tpl.php,请从基本主题或系统模块中复制。

常见陷阱:

  • 如果theme.info文件未声明任何区域,则使用的是Drupal默认区域。如果要添加,则必须重新声明默认区域。您当然可以删除任何区域,但请支持所需的区域。再次查看文档

  • 只有清除缓存后,才会注意到对.info文件的更改或向主题中添加新文件(例如page.tpl.php)。

  • Omega是一个非常流行的基本主题,不需要对page.tpl.php进行任何更改,只需更改.info文件即可。但是,您将必须访问UI中的主题设置,并将您的区域分配给区域。


这是常见陷阱的总结。
Capi Etheriel '02

regions[content] = ContentD7中唯一需要的区域吗? drupal.org/node/171205#regions似乎暗示这一点,但随后drupal.org/node/171224说,所需要的区域contenthelppage_toppage_bottom
吉姆·加里森

我不知道Drupal是否检查任何区域,但是content绝对非常重要。help由核心支持(用于输出帮助消息),page_bottom可能是底部js的打印位置,page_top似乎用于诸如核心工具栏之类的导航栏。
Capi Etheriel 2014年

2

请按照以下步骤在主题中创建自定义区域:

  1. 转到您的theme.info文件并添加此行。

    regions[machine_name_of_your_region] = Name of your region
  2. 尽管您也可以在节点模板中调用区域块,但是通常您会将区域添加到主题的页面模板中。通常是page.tpl.php,或者如果您有用于不同页面的自定义模板文件,也请对其进行编辑。新区域将仅出现在添加新区域的模板周围的页面上。将其粘贴到要显示新区域的任何位置。

    <?php if ($page['machine_name_of_your_region']): ?>
      <div id="sidebar-first" class="column sidebar"><div class="section">
      <?php print render($page['machine_name_of_your_region']); ?>
      </div></div> <!-- /.section, /#sidebar-first -->
     <?php endif; ?>
    
  3. 配置-性能-清除所有缓存


0

在主题中创建新区域

您只需要在两个文件中定义它。

  • Theme.info
  • Page.tpl.php

Theme.info

;;;;;;;;;;;;;;;;;;;;;
;; Regions
;;;;;;;;;;;;;;;;;;;;;

regions[navigation]      = 'Navigation'
regions[header]          = 'Top Bar'
regions[highlighted]     = 'Highlighted'
regions[new_region_name] = 'Region Name' ;; Add New Region

Page.tpl.php

现在渲染该区域

  <?php if ($page['new_region']): ?>
      <div class="new_region_class">
        <?php print render($page['new_region']); ?>
     </div>
  <?php endif; ?>

现在清除所有缓存,到这里,您的主题中有了一个新区域。您可以在块配置页面上看到它。

有关更多信息,请访问http://drupal.org/node/171205

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.