You are here

多页面模板

老葛的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的模板文件就可以了
 

Drupal版本: