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()的输出,它常在页面的底部使用。 …
