drupal7模板命名机制/规则

论坛: 
drupal7的模板命名机制相对于d6还是有写改变的,这让从d7下手看d6教程的我琢磨了好一阵子,比如定制首页模板,d6是创建page-front.tpl.php文件,而d7是drupal--front.tpl.php文件,多了一横杠。
html.tpl.php 这个模板是输出网页的外部框架模板,主要是定义html的head部分的内容,包括doctype、网页使用的语言、RDF信息、网页标题、css、js。
page.tpl.php 这个模板是所有页面的内容模板,也就是html.tpl.php中body中<?php print $page; ?>的部分,这个模板决定了drupal输出的内容结构,在这个模板里把在info里定义的区域变量嵌入到这个模板里。
maintenance-page.tpl.php 网站维护模式的模板页,如果你想修改你的网站维护状态下的页面,就把这个页面复制到你的主题下进行修改吧。其余的模板文件分散存在于各个模块中,通常情况下,只要这个模板文件存在的话,你只需要把这个模板复制到你的主题目录下进行修改就可以重写默认的模板。
模板建议(template suggestions)是基于已有.tpl.php文件的可选模板文件。当满足特定的条件,并且相应的文件存在时,就使用这些建议。每一层次,包括内核、模块、主题引擎、主题,都可以提供相应的建议。你可以把它们当作“命名提示”(naming hints),来告诉系统根据合适的环境选择合适的模板。这种想法很简单,但是这一特性却非常强大,它使得在模板层上也能进行定制。提示:可以安装Theme developer来查看网页某个部分的模板建议规则顺序。http://drupal.org/project/devel_themer
区块模板建议规则:block--[region|[module|--delta]].tpl.php
主题系统会依如下次序进行搜索,且以先搜到的模板文件为模板进行输出。
block--module--delta.tpl.php
block--module.tpl.php
block--region.tpl.php
例如:你在后台新建一个区块,因为后台建立的区块是由block模块输出的所以module名字为block,假如此区块的id为1,假如此区块被放置到区域sidebar中,那么模板搜索顺序是
block--block--1.tpl.php
block--block.tpl.php
block--siddbar.tpl.php
节点模板建议规则:node--[type|nodeid].tpl.php
例如:假如一个节点类型为article的节点id为1的节点,模板搜索顺序为
node--1.tpl.php
node--article.tpl.php
node.tpl.php
drupal7模板命名机制:
页面模板建议规则:page--[front|internal/path].tpl.php
首页模板 page--front.tpl.php
基于内部路径的搜索优先顺序以http://www.example.com/node/1/edit为例:
page--node--edit.tpl.php
page--node--1.tpl.php
page--node.tpl.php
page.tpl.php
PHP嵌入变量到模板:
如果info里定义区域 regions[header] = 页眉
对应的,模板里嵌入页眉的语法就是 <? print render($page['区域变量']); ?>
对于简单变量 直接print出变量即可 对于数组类型的变量则先要用render渲染一下在print输出。
如果在一个模板中,你不知道这个模板都有什么变量的话,使用以下调试脚本输出
<?php
$vars = get_defined_vars();
print_r($vars);
?>