Drupal模板文件 — page.tpl.php
一些主题包含所有的各种模板文件,而其他仅包含page.tpl.php。所以你如何知道你可以创建那些模板文件以及哪些可被Drupal识别?创建模板文件时所遵循的命名习惯有哪些?在接下来的部分,你将学习到使用模板文件的里里外外的各种知识。
page.tpl.php是所有其它模板文件的祖宗,并为站点提供了整体的外观,其它模板文件被插入到了page.tpl.php,如图:

在图中block.tpl.php和node.tpl.php的插入由主题系统自动完成。记住在前面的例子中什么时候你创建了page.tpl.php文件?好的,变量$content包含了对node.tpl.php输出的调用,而$sidebar_left包含了对block.tpl.php输出的调用。
当你想为其它的页面创建不同的外观时,而一个简单的页面外观不再适用了,你想怎么办?有两种好的方式可以创建更多的页面模板。
首先,你可以通过基于站点当前系统URL来创建额外的页面模板文件。例如,如果你想访问http://example.com/?q=user/1,那么PHPTemplate将以下面的顺序来查找页面模板:
page-user-1.tpl.php
page-user.tpl.php
page.tpl.php
PHPTemplate一旦找到一个要包含的模板文件将会停止继续寻找。page-user.tpl.php可被所有的用户页面使用,而page-user-1仅可以在URL为user/1, user/1/edit时执行,等等。
注意:在这里Drupal使用的是内部的URL,所以如果你是用了允许别名化URL的模块path或者pathauto时,你仍然需要引用Drupal的内部URL,而不是使用别名。
让我们使用节点编辑页面http://example.com/?q=node/1/edit作为一个例子。下面是PHPTemplate查找页面模板文件的顺序:
page-node-edit.tpl.php
page-node-1.tpl.php
page-node.tpl.php
page.tpl.php
警告:如果你没有在page.tpl.php中使用区域变量($header, $footer, $sidebar_left, $sidebar_right),但是它们仍然被创建了。这是一个性能问题,因为Drupal构建的所有的区块,而对于一个特定的页面视图却把它们扔到了一遍。如果定制页面视图不需要区块,一个比从模板文件中排除该变量的更好的方式是到区块管理页面中去,当展示定制页面时,将这些区块禁用掉。
细节:为你的站点的首页创建一个定制的页面模板,简单的创建一个名为page-front.tpl.php的模板文件即可
如果你需要创建一个定制的页面模板,你可以从复制你当前的page.tpl.php的开始,然后将它修改为你所需要的。下面是在页面模板中可用到的变量:
$base_path:Drupal安装的基本路径。如果安装在根目录下,这是最简单的,他将默认为根目录。
• $breadcrumb: Returns the HTML for displaying the navigational breadcrumbs on the page.
• $closure:返回hook_footer()的输出,它常在页面的底部使用。
• $css:.返回一个所有css文件组成的数组结构,以添加到页面中去。使用$styles来返回$css数组的HTML版本。
• $content:返回将要展示的HTML内容.例如,它可以包含一个节点,一组节点,管理接口的内容,等等。
• $directory:主题所在的相对路径。例如themes/bluemarine 或者 sites/all/themes/custom/mytheme。你通常联合使用该变量和$base_path来构建你的站点主题的绝对路径:
• $feed_icons:返回该页面的RSS种子链接
• $footer_message:返回页脚信息文本,在下面页面输入它:
Administer ➤Site configuration ➤ Site information.
• $head:返回放置在
部分的HTML。模块可以通过调用drupal_set_html_head()来向$head添加额外的比如RSS种子的纯文本。
• $head_title:在页面标题中展示的文本,放在HTML
• $help: 帮助文本,大多数用于管理页面。模块可以通过实现hook_help()来提供该变量。
• $is_front: 如果当前展示的为首页的话为真TRUE。
• $language:站点展示时所使用的语言
• $layout:这一变量允许你定义外观的不同类型的风格,而变量$layout的值依赖于启用的工具条(sidebars)的数量。可能的值包括:none, left,right, and both.
• $logo: 指向logo图像的路径,在启用主题的主题配置页面定义。通常这样使用:
• $messages: 为表单或者其他信息返回的验证错误和正确的提示信息的HTML。它通常显示在页面的头部。
• $mission: 返回站点使命文本,在 Administer ➤ Site configuration ➤ Site information中输入.只有当$is_front 为 TRUE时才可以使用。
• $node:整个节点对象,当察看一个单独节点页面时可用。
• $primary_links: 一个包含了一级链接的数组。在Administer ➤ Site building ➤ Menus中定义它们。通常$secondary_links通过函数theme('links')来定制输出的样式,如下所示:
• $scripts: 返回向页面的<script>标签中所添加的HTML。这也是关于jQuery如何被加载的
• $search_box: 返回搜索表单的HTML。当管理员在启用的主题中的主题配置页面禁止展示搜索时,或者搜索模块禁用时,$site_slogan为空。
• $secondary_links: 一个包含了二级链接的数组。在Administer ➤ Site building ➤ Menus中定义它们。通常$secondary_links通过函数theme('links')来定制输出的样式,如下所示:
• $sidebar_left:返回左边工具条的HTML,包含了属于该区域的所有区块的HTML。
• $sidebar_right:返回右边工具条的HTML,包含了属于该区域的所有区块的HTML。
• $site_name: 站点的名称。在Administer ➤ Site configuration ➤Site information中设置。当管理员在启用的主题中的主题配置页面禁止展示标语时,$site_ name为空。
• $site_slogan: 站点的标语。在Administer ➤ Site configuration ➤Site information中设置。当管理员在启用的主题中的主题配置页面禁止展示标语时,$site_slogan为空。
• $styles:返回连接到页面需要的CSS文件的HTML。CSS文件通过drupal_add_css()添加到$styles中去。
• $tabs: 返回用于为节点展示诸如View/Edit的标签的HTML。
• $title:主内容的标题,与$head_title不同。当察看一个单独节点视图页面时,$title就是节点的标题。当常看Drupal的管理员页面时,$title通常有菜单项来设置,菜单项对应于查看的页面。
- 850 reads








jewelry stores jared
jewelry stores jared
thanks man
thanks man
Post new comment