老葛的Drupal培训班 Think in Drupal
当你想为站点上的不同页面创建不同的布局时,而一个单独的页面布局不能再满足所有需要了,你该怎么办呢?下面有一些好的实践,用来创建其它的页面模板。
你可以基于站点的当前系统URL,来创建其它的页面模板文件。例如,如果你访问页面http://example.com/?q=user/1,那么PHPTemplate将以下面的顺序来查找页面模板,这里假定你使用的Greyscale主题:
sites/all/themes/custom/greyscale/page-user-1.tpl.php
modules/system/page-user-1.tpl.php
sites/all/themes/custom/greyscale/page-user.tpl.php
modules/system/page-user.tpl.php
sites/all/themes/custom/greyscale/page.tpl.php
modules/system/page.tpl.php
PHPTemplate一旦找到一个要包含的模板文件,那么它将会停止查找。page-user.tpl.php适用于所有的用户页面,而page-user-1仅仅可以用在URL为user/1, user/1/edit,等等的页面。如果Drupal在主题系统中的任何位置都找不到页面模板,那么将会调用内置的模板modules/system/page.tpl.php。
注意 在这里,Drupal使用的是内部的URL,所以即便是使用了path或者pathauto模板(这两个模块允许你创建URL别名),对于页面模板,你仍然需要使用Drupal的内部URL,而不是使用别名。
让我们使用节点编辑页面http://example.com/?q=node/1/edit作为示例。下面是PHPTemplate查找的页面模板文件的顺序:
sites/all/themes/custom/greyscale/page-node-edit.tpl.php
modules/system/page-node-edit.tpl.php
sites/all/themes/custom/greyscale/page-node-1.tpl.php
modules/system/page-node-1.tpl.php
sites/all/themes/custom/greyscale/page-node.tpl.php
modules/system/page-node.tpl.php
sites/all/themes/custom/greyscale/page.tpl.php
modules/system/page.tpl.php
如果你是一个Drupal模块程序员的话,通过学习前面的例子,你应该可以很方便的为你的模块提供一个默认模板;具体的示例,你可以到modules目录下看看。
提示 如果想为你站点的首页创建一个自定义页面模板,那么只需要简单的创建一个名为page-front.tpl.php的模板文件就可以了