跳转到主要内容
东方龙马 提交于 24 July 2012

默认情况下,Drupal核心通过程序为主题定义了9个区域。在清单15-2中的代码复制出了以“.info”文件格式默认区域。和大多数的主体层实现原理一样,主题定义区域的原因是因为他们想要修改或者添加到默认值。除非某个主题定义了它自己的区域,否则Drupal将使用默认的区域。这意味着,假如默认的区域足以满足你的设计,那么你将不需要在你的“.info”文件里定义区域。

清单15-2 Drupal的9个按时间顺序排列的预定义的主题区域

regions[page_top] = Page Top regions[header] = Header regions[highlighted] = Highlighted regions[help] = Help regions[content] = Content regions[sidebar_first] = Sidebar First regions[sidebar_second] = Sidebar Second regions[footer] = Footer regions[page_bottom] = Page Bottom

然而,在主题的“.info”文件开头包含这段代码是个不错的做法。倘若你仅定义一个区域的话,它将会覆盖核心默认的,因此保持默认区域的完整列表,注释掉已禁用的区域(而不是完全删除或者忽略)是一个很好的方法,可以跟进将用它们来做什么。其中的一些区域可能会需要,比如:page_top,content,page_bottom这些区域。对于正常运作的网站,这些是必需的且必须在每一个Drupal主题输出的。一个如何组织“.info”文件中的区域的例子,且考虑到默认设置,如清单15-3 所示。

清单15-3. 一个在“.info”文件中实现区域的例子

; 核心区域 – 禁用的 ;regions[highlighted] = Highlighted ;regions[help] = Help ;regions[header] = Header ;regions[footer] = Footer ; 核心区域 – 需要的 regions[page_top] = Page Top regions[content] = Content regions[page_bottom] = Page Bottom ; CORE REGIONS regions[sidebar_first] = Sidebar First regions[sidebar_second] = Sidebar Second ; CUSTOM REGIONS regions[my_custom_region] = My Custom Region

提示:如果对Drupal在哪里定义默认区域感兴趣,不妨看看“_system_rebuild_theme_data()”函数,地址在http://api.drupal.org/_system_rebuild_theme_data

如图15-10所示,展示的Drupal默认区域是一个标准的三栏布局。灰色的区域是必须的,而其余的是可选的。Header、sidebar_first、sidebar_second、footer是布局方面的区域。page_top和page_bottom是特殊区域;它们将在本章的“隐藏区域”部分讨论。

图15-10. Drupal的默认布局区域

Highlighted(高亮)区域取代了过去的站点任务(Mission),它过去是一个包含站点任务状态的静态变量,或者是一个在page.tpl.php中手动输出简短的摘要文本。过去实施不够理想有多方面原因,但是最主要是因为仅显示在首页。所以说,使用自定义的区块来显示此信息是一个更好的选择,因此创建了highlighted区域。

Help(帮助)区域曾经也是page.tpl.php中的变量,用于输出错误和状态信息。现在状态信息放在一个称为“系统帮助”的区块中,同时Help区域用于放置它。但是“系统帮助”区块可以很容易地放在内容区域中,权重设置高于内容区块也能达到同样的效果。

内容区域是Drupal7新增的。据介绍,包含页面主要内容的区块,有一点比较特殊,就是它可以在区域之间切换,但是不能被禁用。