默认情况下,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新增的。据介绍,包含页面主要内容的区块,有一点比较特殊,就是它可以在区域之间切换,但是不能被禁用。