用Drupal的行话来说,主题就是一组负责你站点外观的文件。你可以从http://drupal.org/project/Themes下载第3方主题,或者你可以自己动手创建一个主题,后者正是你在本章将要学习的。作为一个web设计者,主题由你所熟悉的大部分内容所组成:样式表,图片,JavaScript文件,等等。你将发现,在Drupal主题和纯HTML站点之间的区别就是模板文件。这些文件一般都包含大段的静态HTML,和一些小段的用来插入动态内容的代码。它们负责你站点的一个特定部分的外观。模板文件的语法依赖于它所使用的主题引擎。例如,列表8-1,8-2,8-3列出了3个模板文件的代码片段,它们输出的内容是一样但是包含的模板文件内容却完全不同。
列表 8-1. Smarty
<div id="top-nav">
{if count($secondary_links)}
<ul id="secondary">
{foreach from=$secondary_links item=link}
<li>{$link}</li>
{/foreach}
</ul>
{/if}
{if count($primary_links)}
<ul id="primary">
{foreach from=$primary_links item=link}
<li>{$link}</li>
{/foreach}
</ul>
{/if}
</div>
列表 8-2. PHPTAL
<div id="top-nav">
<ul tal:condition="php:is_array(secondary_links)" id="secondary">
<li tal:repeat="link secondary_links" tal:content="link">secondary link</li>
</ul>
<ul tal:condition="php:is_array(primary_links)" id="primary">
<li tal:repeat="link primary_links" tal:content="link">primary link</li>
</ul>
</div>
列表 8-3. PHPTemplate
<div id="top-nav">
<?php if (count($secondary_links)) : ?>
<ul id="secondary">
<?php foreach ($secondary_links as $link): ?>
<li><?php print $link?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
<?php if (count($primary_links)) : ?>
<ul id="primary">
<?php foreach ($primary_links as $link): ?>
<li><?php print $link?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</div>
每一个模板文件,由于它所使用的模板语言的不同,所以看起来也各不相同。模板文件的扩展名指明了它所使用的模板语言,也就是它所依赖的主题引擎(参看表8-1)
表8-1 模板文件的扩展名指出了它所依赖的模板语言。
模板文件 主题引擎扩展
.theme PHP
.tpl.php PHPTemplate*
.tal PHPTAL
.tpl Smarty
* PHPTemplate是Drupal的默认主题引擎
老葛的Drupal培训班 Think in Drupal