The Concept of Template

The Concept of Template

出自LifeType 中文文件计画

跳转到: 导航, 搜寻

模版如何运作?

前面提到过,LifeType使用Smarty引擎来产生网志的网页内容。也就意味着使用者可以轻易的在后台管理介面中,更换模版改变网页的外观。但,模版是如何运作?使用者又该如何制作属于自己的模版呢?

开始之前必须先知道的是,所有的模版存放在LifeType架构中的哪一个位置。LifeType的模版是存放在*templates/*之下,在这个资料夹中,除了网志可以使用的模版之外,还包含了后台页面(admin)、摘要页面(summary)、安装精灵(wizard)、RSS feed页面(rss)以及邮件通告(misc)等模版。

LifeType预设的网志模版有三个,分别是standard、grey与blueish。以grey模版为例,在grey资料夹中,我们可以看到以下的*.template文件档:

  • commentarticle.template
  • commentform.template
  • demosites.template
  • error.template
  • features.template
  • footer.template
  • header.template
  • main.template
  • post.template
  • postandcomments.template
  • posttrackbacks.template
  • samplerss.template
  • album.template
  • albums.template
  • resource.template
  • searchresults.template

在这16个*.template文件档中,以粗体表示的是最基本的模版,也是必须存在的模版。这9个模版更是网志运作与呈现不可缺少的。以下简述9个档案的基本功能:

  • main.template:这个档案控制网志的主页面。
  • postandcomments.template:这个档案控制网志文章内容与迴响内容的呈现。
  • commentarticle.template:这个档案主要用来显示新增(或回覆)迴响时的表单。
  • posttrackbacks.template:用来显示网志文章的所有引用资讯。
  • error.template:显示错误讯息用。
  • album.template:显示资源中心资料夹下的档案。
  • albums.template:与上述档案不同之处,这个档案室用来显示资源中心里所有最上层的资料夹。
  • resource.template:用来显示档案详细资料。
  • searchresults.template:顾名思义,就是用来显示网志中搜寻结果。

看到这,或许有人会怀疑,既然只需要9个模版档案即可,那为何又多出7个额外的档案?这7个档案或许不起眼,但却是修改模版中不可缺的帮手,有了这7个档案,让模版的修改更加容易。

上述9个主要模版档案中,每一个档案都必须有完整的网页结构,才能让网志正常运作。而这些网页呈现所需的结构,有部分是一再重复的。在制作模版的过程中,如果要让每个页面有相同的页首与页尾,没别的办法,只能重复的执行「复制、贴上」的动作9次。若不幸中途做了点修改,那又得回头去「复制、贴上」。

幸好,Smarty允许使用{include...}标籤在当案中匯入另一个档案,只要在标籤中加上参数「file」,并设定好匯入档案的路径即可。有了这样的功能,在制作或修改模版的时候,我们只需将会重复使用的部分写成一个档案,再利用{include...}标籤将其匯入LifeType的主要模版之中。

以页首与页尾为例子,若所有模版均使用相同的页首(header)与页尾(footer),那么模版开发者只需将页首页尾的部分另外写成header.template与footer.template两个档案,再用{include...}标籤匯入到主要的模版档案中,方法如下:

{include file="$blogtemplate/header.template"}

...

模版内容

...

{include file="$blogtemplate/footer.template"}

有一点须注意的是,{include...}标籤中使用的路径是相对于templates/ 资料夹的。另外,也可以使用$blogtemplate变数来表示templates/底下各个模版资料夹的名称,这样一来就算模版资料夹更名或搬移,也不会影响模版的运作。

利用这样的方式,当我们修改模版页首的呈现时,只需针对header.template修改一次,即可达到全部修改的目的。也因此,才会出现 commentform.template、post.template等档案的出现。而这些模版中,我们已经知道header.template与 footer.template,分别控制页面的页首与页尾呈现,在此简单叙述commentform.template与post.template这两个档案的作用:

  • commentform.template:这个档案主要包含了提交迴响的表格,因为也具有可重复使用的特性,因此将其独立出来,再以匯入的方式工其他档案使用。一般来说,这个档案常用在postandcomments.template之中。
  • post.template:这个档案主要包含了网志的文章内容,一般来说,这个档案常用在main.template与postandcomments.template之中。

(以上摘译改写自 LifeType英文wiki文件,下方Smarty如何产生php页面的图解与说明,改写自Mark Wu的0.32 版教学投影片。)

说完了LifeType模版的基本结构,那这些模版究竟是如何运作,成为最后呈现在网页上面的样子?以下借用Jace Ju的Smarty入门中的Smarty样版引擎运作示意图,来说明LifeType模版的运作流程。 图片连结:http://forum.lifetype.org.cn/index.php?action=dlattach;topic=1552.0;id=89;image