Posts Tagged ‘文档模板’

文档模板制作详解

星期四, 01月 3rd, 2008

woodplow publisher在严格意义只有一种前台模板,那便是文档模板,没有其他发布系统中存在的栏目模板、首页模板、列表模板等,因为woodplow强调动静结合、区域划分。
什么是动静结合呢?网站的静态化是为了迎合搜索引擎对静态页面的喜好、降低服务器负载,可是过度静态化会增加维护成本,并且内容更新的即时性也会受到影响;网站的动态化(在建站早期基本上都是)能保证内容的即时性,相应却加重了服务器的负载,毕竟大部分动态页是数据库驱动的,而数据库的性能成为80%网站的性能瓶颈。当然,像新浪这种大型门户,静态化是通过计划任务自动完成的,维护开销也不是很大,毕竟中小型的用户没有这个实力。因此,我们主张伪静态(还是动态)+纯静态来解决搜索引擎收录跟维护成本的矛盾。
什么是区域划分呢,区域划分就是为了降低维护量,主要用于站点首页、栏目页、最终页。首页、栏目页、最终页是更新频率最快的页面,尤其是首页和栏目页,而首页和栏目页的维护就是要划定区域,分开处理,毕竟不同的区域更新时间是不同的。比如:sina的首页区域划分

1、招商加盟区 2、娱乐音乐区 3、体育nba区 4、社会军事区 5、影视直播区
不同的区域由不同的人维护,因此首页模板没有存在的价值。还比如一级栏目页

二级栏目页:

这些页面都可以只做好layout页面,然后上传即可。比如:

其中这种代码就是ssi(server side include)服务器端的包含,iis和apache都支持,这个包含文件就是页面管理中需要添加的,如图:

然后设定该区域满足的调用条件:

而文档的归档页面,也就是列表页面,woodplow推荐使用伪静态或者archive插件来处理,比如

这样可以降低维护的成本。

下面介绍如何制作文档模板
1、模板变量
模板变量都以形式存在,即调用field函数。可用字段参数对应如下:


docid <=> 文档标识(document+block)
pageid <=> 文档分页标识(document)
branchid <=> 分支标识(document+block)
doctypeid <=> 文档类型标识(document+block)
fromid <=> 文档转载来源标识(document+block)
authorid <=> 文档记者标识(document+block)
editorid <=> 文档编辑标识(document+block)

doctitle <=> 文档标题(document+block)
subtitle <=> 文档副标题(document+block)
branch <=> 分支标题(document+block)
alias <=> 分支别名(document+block)
context <=> 分支上下文(document+block)
branchurl <=> 分支链接地址(document+block)
domainurl <=> 所属域名(document)
tag <=> 文档tag,类似于关键字(document+block)
doctype <=> 文档类型(document+block)
docfrom <=> 文档转载来源(document+block)
author <=> 文档记者(document+block)
navipic <=> 导航图片(document+block)
digest <=> 文档导读(document+block)
pagecount <=> 文档页数(document)
pageindex <=> 文档分页索引值(document)
pagetitle <=> 文档页标题(document)
pageurl <=> 文档页地址(document)
content <=> 文档页内容(document)
createtime <=> 文档创建时间(document+block)
说明:括号中document代表对文档模板有效,block代表对区域页面模板有效。
注意:
2、模板函数
模板函数遵循格式,并且可以互相嵌套,例如:

prev <=> 前一页(document)
next <=> 后一页(document)
page <=> 分页 (document)
formatdate <=> 日期格式化(document+block)
urlencode <=> 网页地址格式化(document+block)
left <=> 截取字符串(document+block)
filterhtml <=> 过略html标记(document+block)
relate <=> 相关文档(document)
trim <=> 剔除空格(document+block)
crlf <=> 剔除回车换行(document+block)
cdata <=> xml cdata标记(document+block)
replace <=> 字符串替换(document+block)

用户可以自主添加自定义函数,下图是上述模板函数的api:

注意:函数的字符串参数不能使用双引号(””)引用,须使用单引号(”)
示例说明:

  • prev函数api: 其中,prevTemplate为前一页链接模板,firstTemplate为第一页链接模板,即如果当前页有前一页,则使用前一页链接模板,如果当前页为第一页,则使用第一页链接模板。例如: $pageurl$为模板保留字,此处代表上一页的文档访问地址此函数与page函数、next函数配合实现效果: 类似的效果也可以延伸出来。
  • next函数api: 其中,nextTemplate为下一页链接模板,lastTemplate为最后一页链接模板,即如果当前页有下一页,则使用下一页链接模板,如果当前页为最后一页,使用最后一页的链接模板。例如:
  • page函数api: 其中,pageType是分页类型,如果为1,则为下拉式分页方式,如果为2,则为平面分页方式,pageTemplate为非当前页模板,currentTemplate为当前页模板,例如:下拉式分页平面式分页 下拉式分页样式1如图: 平面式分页样式1如图:
  • 平面式分页样式2如图:
  • urlencode函数api:,targetStr为需要编码的字符串,该函数应用最多的场合就是对文档访问地址进行格式化,防止javascript引用时出现错误,例如:,用到了与field模板变量函数的嵌套调用。crlf函数、trim函数、filterhtml函数也是使用此种调用方法。
  • left函数api:此函数用于对超过一定长度的字符串截取到指定长度,targetStr为需要截取的字符串或者嵌套变量,cutLenght为截取的长度,suffix为后缀填补字符串。例如:
  • formatdate函数api:,dateString为要格式化的日期字符串,dateFormat为日期格式,如果以2007-05-01 09:08:04为例,可用的格式变量有:{Y}=2007,{y}=07,{M}=5,{m}=05,{D}=1,{d}=01,{H}=9,{h}=09,{MI}=8,{mi}=08,{S}=4,{s}=04。例如:,便是格式为2007-05-01的样式。
  • replace函数api:,把字符串srcString中出现的outString字符串替换为inString。例如:
  • relate函数api:,relateNum为调用的相关文档数目,styleTemplate为风格模板,例如:,样式模板中可以使用的内部保留字有: $docid$=文档标识,$doctitle$ =文档标题,$docurl$ = 文档访问地址,$createtime$ = 文档创建时间, $branch$ = 分支名称,$alias$ = 分支别名,$branchid$ = 分支标识,$doctype$ = 文档类型,$doctypeid$ = 文档类型标识,$index$ = 相关文档当前索引

文档模板中加入分页的方法

星期四, 01月 3rd, 2008

woodplow的模板中可以很容易的对多分页的文档进行描述,其中用到了几个系统定义好的模板助记符。

<!–cms:page(pagetype,pagetemplate,currtemplate)–>

其中pagetype为1时为下拉式分页,pagetype为2时为平面式分页,可以自己扩展其他pagetype

下拉式分页示例:

<!–cms:page(1,’<option value=”$pageurl$”>第$pageindex$页:$pagetitle$</option>’,’<option value=”” selected>第$pageindex$页:$pagetitle$</option>’)–>

在这里$pagetitle$ 代表分页标题,$pageindex$代表分页索引号,$pageurl$代表分页的访问地址。

平面式分页示例:

<!–cms:page(2,’<li class=”li_blue”><a href=”$pageurl$”>第$pageindex$页:$pagetitle$</a></li>’,’<li class=”li_red”>第$pageindex$页:$pagetitle$</li>’)–>

如果要显示上一页、下一页,则使用下面两个模板项:

<!–cms:prev(prevTemplate,firstTemplate)–>

<!–cms:next(nextTemplate, lastTemplate)–>

上一页示例:

<!–cms:prev(’<a href=”$pageurl$”>上一页</a>’, ‘第一页’)–>

下一页示例:

<!–cms:next(’<a href=”$pageurl$”>下一页</a>’, ‘最后页’)–>

当然,你也可以使用图片来标识上一页、下一页 。