织梦官方织梦CMS模板制作手册.docx
《织梦官方织梦CMS模板制作手册.docx》由会员分享,可在线阅读,更多相关《织梦官方织梦CMS模板制作手册.docx(69页珍藏版)》请在冰豆网上搜索。
织梦官方织梦CMS模板制作手册
织梦织梦CMS模板制作手册
版本:
20120312
编写:
天涯
上海卓卓网络科技有限公司
Copyright2002-2012DesDevINC.Allrightsreserved.
2
Copyright2002-2012DesDevINC.Allrightsreserved.
目录2
版权申明6
前言7
简介7
主题7
发行方法7
手册Web站点7
最后8
第一章织梦模板设计师要求9
1.1设计师定义9
1.2设计师级别划分及要求9
第二章模板制作流程10
第三章模板文件及目录结构11
3.1模板目录11
3.2模板文件与功能说明11
3.2.1概念,设计和使用模板12
3.2.2命名规则12
3.3其它模板说明13
第四章模板引擎介绍14
4.1静态模板引擎14
4.1.1核心文件14
4.1.2功能描述14
4.1.3模板语法14
4.2动态模板引擎15
3
Copyright2002-2012DesDevINC.Allrightsreserved.
4.2.1核心文件15
4.2.2功能描述16
4.2.3使用方法16
4.2.4标记语法16
4.3模板标签19
4.3.1标签介绍19
4.3.2标签的分类19
第六章标签参考20
6.1全局标签20
arclist文档列表20
arclistsg独立单表模型文档列表23
arcpagelistarclist列表分页24
autochannel指定栏目25
cattree树形类目26
channel获取栏目列表标签26
channelartlist当前频道的下级栏目的内容列表29
feedback评论内容32
field内容变量34
flink友情链接35
flinktype友情链接类型36
global全局配置变量标签37
hotwords搜索关键词37
jsonJSON数据调用38
loop万能调用标签41
memberlist会员列表42
myad广告44
mynews站内新闻46
mytag自定义宏标签48
phpphp标签49
softmsg软件下载提示信息50
4
Copyright2002-2012DesDevINC.Allrightsreserved.
sonchannel子栏目调用52
sqlSQL查询标签53
tagTAG调用标签55
type指定栏目调用标签56
vote投票标签57
6.2列表标签57
list列表数据标签57
pagelist列表分页标签59
6.3内容标签60
likearticle相关文档60
pagebreak内容分页标签61
pagetitle分页标题63
prenext获取上一篇、下一篇内容65
fieldlist当前模型内容页字段列表66
6.4模块标签68
bookcontentlist连载图书最新内容调用68
booklist连载图书调用69
group圈子调用标签70
groupthread圈子主题调用标签71
6.5其他标签72
infoguide分类信息的地区与小分类搜索72
infolink分类信息地区与类型快捷链接73
第七章模板扩展75
7.1标签扩展75
7.1.1定义标签75
7.1.2标签文件内容结构75
7.1.3属性处理76
7.1.4底层模板处理77
7.2常用函数78
cn_substr78
5
Copyright2002-2012DesDevINC.Allrightsreserved.
Html2Text79
Text2Html79
MyDate80
GetDateTimeMk81
FloorTime82
HtmlReplace82
RemoveXSS83
6
Copyright2002-2012DesDevINC.Allrightsreserved.
版权申明
发布本资料须遵守开放出版许可协议1.0或者更新版本;
未经版权所有者明确授权,禁止发行本文档及其被实质上修改的版本;
未经版权所有者事先授权,禁止将此作品及其衍生作品以标准(纸质)书籍形式发行;
如果有兴趣再发行或再版本手册的全部或部分内容,不论修改过与否,或者有任何问题,请联系版权所有
者tianya(AT)。
对DedeCMS及本手册有任何疑问或者建议,请进入官方论坛发布相关讨论。
并在
此感谢所有参与到DedeCMS项目中的朋友。
有关DedeCMS项目及本文档的最新资料,请及时访问官方主站。
本文档及其描述的内容受有关法律的版权保护,对本文档内容的任何形式的非法复制,泄露或散布,将导
致相应的法律责任。
7
Copyright2002-2012DesDevINC.Allrightsreserved.
前言
简介
本手册是织梦官方推出,用于介绍织梦内容管理系统(以下简称:
DedeCMS)模板的制作,为织梦模
板设计师提供一份快速检索的操作文档,全面介绍了织梦的模板引擎、标签及常用函数,相信会大大提高
模板设计师的制作效率。
DedeCMS的模板引擎采用了官方自行研发的Dede模板引擎,类XML结构的标签简单易懂,便于在
网页编辑器中进行编辑。
同时标签齐全,应用广泛,这为基于DedeCMS建设开发的站点提供了一个良好
的基础,只需要懂HTML就可以搭建您想要的站点,这也是DedeCMS风靡的一个重要因素。
主题
手册将会从以下几个部分进行重点的说明:
织梦模板设计师要求
模板制作流程
模板文件及目录结构
模板引擎介绍
模板标签
模板扩展
发行方法
手册包含在线阅读、PDF、CHM几种发行方式,您可以登录织梦帮助中心来获取最新版本。
手册Web站点
您可以通过手册Web站点同官方取得交流,以及分享您在制作过程中的心得。
8
Copyright2002-2012DesDevINC.Allrightsreserved.
帮助中心:
织梦技术论坛:
最后
编写这本手册,我们不希望他是一个人的项目,希望他有更多热爱织梦、热爱中国开源事业的朋友参
与进来。
同时也需要对使用、支持DedeCMS的每一位用户提供的帮助、贡献、意见、评论、精神支持以
及耐心表示感谢。
9
Copyright2002-2012DesDevINC.Allrightsreserved.
第一章织梦模板设计师要求
本章节介绍织梦模板制作人员所需要的基本条件、所需相关技术。
便于企业、单位招聘选择适合自身
发展的从业人员及对员工进行定位、培训。
1.1设计师定义
能够设计、制作DedeCMS程序模板的人员。
1.2设计师级别划分及要求
这里根据建站需求,我们将织梦模板设计师进行一个大致的划分:
初级:
能够对模板进行修改,例如:
元素布局、调用内容等。
需要掌握基本的HTML,图形图像处理技术,
同时需要对织梦的常用标签有大致的了解。
中级:
能够根据设计稿输出页面、嵌套标签,并能够灵活调用DedeCMS内容。
需要熟练掌握Div+CSS、
Javascript,DedeCMS的模板标签用法,同时需要有一些基本的PHP、MySQL尝试。
高级:
能够独立设计网站界面,并能够输出页面、嵌套标签,同时能够根据自己需求扩展编写自己需要的
标签以达到站点所需效果。
需要熟练掌握图形图像网页设计相关技术、PHP、Javascitpt(jQuery)、织梦模
板引擎。
10
Copyright2002-2012DesDevINC.Allrightsreserved.
第二章模板制作流程
织梦模板制作需要经过以下几个流程:
①设计页面效果图,一般为PSD或者PNG格式的原图;
②将页面效果图输出为HTML格式,后缀名为“.htm”;
③根据页面内容调用需求生成或者编写标签所需代码;
④嵌套标签代码到输出页面对应位置;
⑤测试调试模板文件,保证调用和设计效果一致;
⑥将模板标签、文件上传到模板目录;
⑦在系统设定模板目录,重新生成全站;
11
Copyright2002-2012DesDevINC.Allrightsreserved.
第三章模板文件及目录结构
3.1模板目录
系统的模板目录在系统根目录下的templets内,下面是模板目录的文件目录结构。
templets
├─default······默认模板目录
│├─images······模板图片目录
││├─mood
││└─photo
│├─js·······模板JS脚本目录
│└─style····模板CSS样式目录
├─lurd········LURD系统模板
├─plus·········插件模板目录
├─system······系统底层模板目录
└─wap······WAP模块模板目录
3.2模板文件与功能说明
DedeCMS系统的模板是非固定的,用户可以在新建栏目时可以自行选择栏目模板,官方仅提供最基
本的默认模板,即是内置系统模型的各个模板,由于DedeCMS支持自定义频道模型,用户自定义新频道
模型后,还需要按该模型的字段设计一套新的模板。
此外,DedeCMS也支持使用风格的形式使用模板,默认风格是default,它表示系统默认使用
{cmspath}templetsdefault这个文件夹的模板,如果你下载了一套新的模板,你可以不必要删除default原
有的文件,把下载的模板文件夹命名你想要的风格名称,如style2等,然后在后台修改了默认的模板风格
名称为style2,那系统将使用{cmspath}templetsstyle2这文件当作默认模板,但是若你手工指定了栏目模
板的位置,则后台参数风格的定义无效。
12
Copyright2002-2012DesDevINC.Allrightsreserved.
3.2.1概念,设计和使用模板
板块(封面)模板
指网站主页或比较重要的栏目封面频道使用的模板,一般用“index_识别ID.htm”命名,此外,用户单
独定义的单个页面或自定义标记,也可选是否支持板块模板标记,如果支持,系统会用板块模板标记引擎
去解析后才输出内容或生成特定的文件。
列表模板
指网站某个栏目的所有文章列表的模板,一般用“list_识别ID.htm”命名。
档案模板:
表示文档查看页的模板,如文章模板,一般用“article_识别ID.htm”命名。
其它模板:
一般系统常规包含的模板有:
主页模板、搜索模板、RSS、JS编译功能模板等,此外用户也可以自定
义一个模板创建为任意文件。
3.2.2命名规则
模板保存位置
模板目录:
{cmspath}templets样式名称(英文,默认为default,其中system为系统底层模板,plus
为插件使用的模板)具体功能模板文件}
模板文件命名规范
1index_识别ID.htm:
表示板块(栏目封面)模板;
2list_识别ID.htm:
表示栏目列表模板;
3article_识别ID.htm:
表示内容查看页(文档模板,包括专题查看页);
4search.htm:
搜索结果列表模板;
5index.htm:
主页模板;
注:
[识别ID]可以在“频道模型管理”的地方获得,当然,你也可以在“频道模型管理”的地方确定某个频道
13
Copyright2002-2012DesDevINC.Allrightsreserved.
的模板命名。
例:
list_image.htm表示是就是内容类型为图片集的栏目默认列表模板。
article_article.htm表示的是文章查看页模板。
3.3其它模板说明
默认底层模板
位置:
{cmspath}templetssystem
功能:
在没有指定标记的默认底层模板的时候,系统将自动调用这个文件夹的相应文件作为底层模板。
插件目录模板
位置:
{cmspath}templetsplus
功能:
评论、友情链接、RSS地图等模板。
会员后台模板
位置:
{cmspath}membertemplets
功能:
会员后台的模板。
系统后台模板
位置:
{cmspath}dedetemplets
功能:
系统后台管理的模板
14
Copyright2002-2012DesDevINC.Allrightsreserved.
第四章模板引擎介绍
DedeCMS从V5开始采用了解析式引擎与编译式引擎并存的模式,由于在生成HTML时,解析式引擎拥有
巨大的优势,但对于动态浏览的互动性质的页面,编译式引擎更实用高效,织梦CMS采用双引擎并存的
模式,在保持标签风格一致性的同时,也保证将来开发更多互动模块时有更好的性能。
4.1静态模板引擎
4.1.1核心文件
includededetag.class.php
4.1.2功能描述
DedeCMSV5.3及之前版本使用的主要的模板类,它是解析式模板类,并非编译式的。
注:
编译式是通过获得标签位置进行内容替换,编译式是直接解析为PHP代码,二次执行。
4.1.3模板语法
织梦模板引擎是一种使用XML名字空间形式的模板解析器,使用织梦解析器解析模板的最大好处是
可以轻松的制定标记的属性,感觉上就像在用HTML一样,使模板代码十分直观灵活,新版的织梦模板引
擎不单能实现模板的解析还能分析模板里错误的标记。
织梦模板引擎的代码样式
{dede标记名称属性='值'}
{dede标记名称属性='值'}{dede标记名称}
{dede标记名称属性='值'}自定义样式模板(InnerText){dede标记名称}
注:
如果使用带底层模板的标记,必须严格用{dede标记名称属性='值'}{dede标记名称}这种格式,否
则会报错。
内置系统标记
①global标记,表示获取一个外部变量,除了数据库密码之外,能调用系统的任何配置参数,形式为:
{dedeglobalname='变量名称'}{dedeglobal}
15
Copyright2002-2012DesDevINC.Allrightsreserved.
或
{dedeglobalname='变量名称'}
其中变量名称不能加$符号,如变量$cfg_cmspath,应该写成{dedeglobalname='cfg_cmspath'}。
②foreach用来输出一个数组,形式为:
{dedeforeacharray='数组名称'}[fieldkey][fieldvalue]{dedeforeach}
③include引入一个文件,形式为:
{dedeincludefile='文件名称'ismake='是否为dede板块模板(yesno)'}
对文件的搜索路径为顺序为:
绝对路径、include文件夹,CMS安装目录,CMS主模板目录
自定义函数使用
{dede标记名称属性='值'function='youfunction(参数一,参数二,@me)'}
其中@me用于表示当前标记的值,其它参数由你的函数决定是否存在,例如:
{dedefieldname='pubdate'function='strftime(%Y-%m-%d%H%M%S,@me)'}
织梦标记允许有限的编程扩展
格式为:
{dedetagnamerunphp='yes'}
$aaa=@me;
@me=123456;
{dedetagname}
@me表示这个标记本身的值,因此标记内编程是不能使用echo之类的语句的,只能把所有返回值传递给
@me。
此外由于程序代码占用了底层模板InnerText的内容,因此需编程的标记只能使用默认的InnerText。
4.2动态模板引擎
4.2.1核心文件
includededetemplate.class.php
4.2.2功能描述
用于非核心模块的动态页面或列表页的模板解析,如:
membercontent_list.php,通常是在
16
Copyright2002-2012DesDevINC.Allrightsreserved.
datalistcp.class.php中使用,这个类在动态运行的情况下,由于本身是把模板编译成PHP的,因此性能上
会优级于旧的解析类,这个方法将在未来版本中作为通用的方式。
4.2.3使用方法
$tpl=newDedeTemplate(
模板对象实例名称,通常是'tpl',
[模板存放目录(生成缓存时会存放在这个目录),
include语法默认引用目录]
);
通常情况下参数二和参数三是不必要的,如:
$tpl=newDedeTemplate('tpl');
如果在类文件中调用,应该加上设置:
$this-tpl-SetObject($this);
在一些块调用中默认将使用当前类的成员函数。
$tpl-LoadTemplate(模板的物理路径);
如果模板中带有{dedeconfigname=''value=''}
可以在载入模板后,通过$tpl-GetConfig($name)获得这些变量的值。
显示页面或保存页面为文件
$tpl-Display();
$tpl-SaveTo(物理绝对路径的文件名);
4.2.4标记语法
标记通用特性
①短标记
{dedetagname.name}
等同于
{dedetagnamename=''}
②块标记
17
Copyright2002-2012DesDevINC.Allrightsreserved.
{dedetagname}
循环代码
{dedetagname}
标记的具体语法及对应的PHP代码
①配置变量
{dedeconfigname=''value=''}
配置变量可以在载入模板后通过$tpl-GetConfig($name)获得,仅作为配置,不在模板中显示。
②短标记
{dedeglobal.name}外部变量等同于phpecho$name;
{dedevar.name}var数组等同于phpecho$_vars['name'];
{dedefield.name}field数组等同于phpecho$fields['name'];
{dedecfg.name}系统配置变量等同于phpecho$cfg_name;
考虑到大多数情况下都会在函数或类中调用模板,因此$_vars、$fields数组必须声明为global数组,否
则模板引擎无法获得它的值从而导致产生错误。
③自由调用块标记
{tagblocknamebind='GetArcList'bindtype='class'}
循环代码
{tagblockname}
必要属性:
bind数据源来源函数
bindtype函数类型,默认是class可选为sub
rstype返回结果类型,默认是array,可选项为string
自定义函数格式必须为function(array$atts,object$refObj,array$fields);
在没有指定bind绑定的函数的情况下,默认指向MakePublicTag($atts,$tpl-refObj,$fields)统一管理。
④固定块标记
1.datalist
从绑定类成员函数GetArcList中获取数组并输出
{dededatalist}
循环代码
{dededatalist}
18
Copyright2002-2012DesDevINC.Allrightsreserved.
遍历一个二给维数组,数据源是固定的,只适用用类调用。
等同于
{tagblocknamebind='GetArcList'bindtype='class'rstype='arrayu'}
循环代码
{tagblockname}
2.label
从绑定函数中获取字符串值并输出
等同于{tagblocknamebind='func'bindtype='sub'rstype='string'}
3.pagelist
从绑定类成员函数GetPageList中获取字符串值并输出
等同于{tagblocknamebind='GetPageList'bindtype='class'rstype='string'}
4.include
{dedeincludefile=''}
{dedeincludefilename=''}
5.php
{dedephp
php代码
}
或
{dedephp}
php代码
{dedephp}
6.If
仅支持if,else,else直接用{else}表示,但不支持{elseif}这样的语法,一般建议模板中不要使用太复杂
的条件语法,如果确实有需要,可以直接使用php语法。
{dedeif条件}a-block{else}b-block{dedeif}
条件中允许使用var.name、global.name、field.name、cfg.name表示相应的变量。
如:
{dedeiffield.id10}
{dedeif}
19
Copyright2002-2012DesDevINC.Allrightsreserved.
7.遍历一个array数组
{dedearray.name}
{dedekey}={dedevalue}
{dedearray}
各种语法的具体编译后的代码,可查看dedetemplate.class.php的functionCompilerOneTag(&$cTag)。
4.3模板标签
4.3.1标签介绍
从上面的章节中我们可以获知,织梦模板引擎分为编译式和解析式,系统的标签同样也有这样的划分。
我们在系统涉及到内容管理及生成HTML的地方大多采用了解析式的模板标签,一些互动部分的功能,如
果使用了织梦编译式的模板引擎,也会涉及到编译式的标签,在模板制作和日常的站点维护中,我们大多
接触的是解析式的模板标签,也是本章标签介绍的重点。
解析式标签所在的目录为系统根目录下includetaglib中,编译式涉及到的标签文件存在放根目录下
includetpllib中,这部分的扩展内容会在随后的章节中详细介绍。
4.3.2标签的分类
每个标签都会有他的作用域,上文中我们可以了解系统文档页面可以分为:
封面、列表、内容几个部
分,每个页面的模板则会涉及到不同的标签,所以标签也有了他的作用域,我们在模板制作过程中主要根
据模板的作用域来对模板进行如下划分:
全局标签
可以在前台文档任意页面使用的模板标记,例如:
arclist、channel、sql、loop等。
列表标签
仅在模板_list.htm中可以使用的标签,例如:
list、pagelist。
内容标签
仅在模板_.article.htm中可以使用的模板标记,例如:
likearticle、pagebreak等。
模块标签
仅在特定的模块、插件中使用的模板标记
20
Copyright2002-2012DesDevINC.Allrightsreserved.
第六章标签参考
6.1全局标签
arclist文档列表