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.tw/index.php?action=dlattach;topic=1552.0;id=89;image
参考来源[ ]
LifeType使用手册导航 | ||||||
---|---|---|---|---|---|---|
|