织梦 织梦CMS模板制作手册
版本:20120312
编写:天涯
上海卓卓网络科技有限公司
Copyright?2002-2012DesDevINC.All rightsreserved.
2
Copyright?2002-2012DesDevINC.All rightsreserved.
目录
目录2
版权申明6
前言7
简介7
主题7
发行方法7
手册Web站点7
最后8
第一章织梦模板设计师要求9
1.1设计师定义9
1.2设计师级别划分及要求9
第二章模板制作流程10
第三章模板文件及目录结构11
3.1模板目录11
jquery在线库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
Copyright?2002-2012DesDevINC.All rightsreserved.
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
Copyright?2002-2012DesDevINC.All rightsreserved.
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
Copyright?2002-2012DesDevINC.All rightsreserved.
Html2Text79
Text2Html79
MyDate80
GetDateTimeMk81
FloorTime82
HtmlReplace82
RemoveXSS83
6
Copyright?2002-2012DesDevINC.All rightsreserved.
版权申明
发布本资料须遵守开放出版许可协议1.0或者更新版本;
未经版权所有者明确授权,禁止发行本文档及其被实质上修改的版本;
未经版权所有者事先授权,禁止将此作品及其衍生作品以标准(
纸质)书籍形式发行;
如果有兴趣再发行或再版本手册的全部或部分内容,不论修改过与否,或者有任何问题,请联系版权所有
者tianya(AT)desdev。
对DedeCMS及本手册有任何疑问或者建议,请进入官方论坛bbs.dedecms 发布相关讨论。并在
此感谢所有参与到DedeCMS项目中的朋友。
有关DedeCMS项目及本文档的最新资料,请及时访问官方主站www.dedecms。
本文档及其描述的内容受有关法律的版权保护,对本文档内容的任何形式的非法复制,泄露或散布,将导
致相应的法律责任。
7
Copyright?2002-2012DesDevINC.All rightsreserved.
前言
简介
本手册是织梦官方推出,用于介绍织梦内容管理系统(以下简称:DedeCMS)模板的制作,为织梦模
板设计师提供一份快速检索的操作文档,全面介绍了织梦的模板引擎、标签及常用函数,相信会大大提高
模板设计师的制作效率。
DedeCMS的模板引擎采用了官方自行研发的Dede模板引擎,类XML结构的标签简单易懂,便于在
网页编辑器中进行编辑。同时标签齐全,应用广泛,这为基于DedeCMS建设开发的站点提供了一个良好
的基础,只需要懂HTML就可以搭建您想要的站点,这也是DedeCMS风靡的一个重要因素。
主题
手册将会从以下几个部分进行重点的说明:
? 织梦模板设计师要求
? 模板制作流程
? 模板文件及目录结构
? 模板引擎介绍
? 模板标签
? 模板扩展
发行方法
手册包含在线阅读、PDF、CHM几种发行方式,您可以登录织梦帮助中心来获取最新版本。
手册Web站点
您可以通过手册Web站点同官方取得交流,以及分享您在制作过程中的心得。
8
Copyright?2002-2012DesDevINC.All rightsreserved.
帮助中心:help.dedecms
织梦技术论坛:bbs.dedecms
最后
编写这本手册,我们不希望他是一个人的项目,希望他有更多热爱织梦、热爱中国开源事业的朋友参
与进来。同时也需要对使用、支持DedeCMS的每一位用户提供的帮助、贡献、意见、评论、精神支持以
及耐心表示感谢。
9
Copyright?2002-2012DesDevINC.All rightsreserved.
第一章织梦模板设计师要求
本章节介绍织梦模板制作人员所需要的基本条件、所需相关技术。便于企业、单位招聘选择适合自身
发展的从业人员及对员工进行定位、培训。
1.1设计师定义
能够设计、制作DedeCMS程序模板的人员。
1.2设计师级别划分及要求
这里根据建站需求,我们将织梦模板设计师进行一个大致的划分:
初级:能够对模板进行修改,例如:元素布局、调用内容等。需要掌握基本的HTML,图形图像处理技术,
同时需要对织梦的常用标签有大致的了解。
中级:能够根据设计稿输出页面、
嵌套标签,并能够灵活调用DedeCMS内容。需要熟练掌握Div+CSS、
Javascript,DedeCMS的模板标签用法,同时需要有一些基本的PHP、MySQL尝试。
高级:能够独立设计网站界面,并能够输出页面、嵌套标签,同时能够根据自己需求扩展编写自己需要的
标签以达到站点所需效果。需要熟练掌握图形图像网页设计相关技术、PHP、Javascitpt(jQuery)、织梦模
板引擎。
10
Copyright?2002-2012DesDevINC.All rightsreserved.
第二章模板制作流程
织梦模板制作需要经过以下几个流程:
①设计页面效果图,一般为PSD或者PNG格式的原图;
②将页面效果图输出为HTML格式,后缀名为“.htm”;
③根据页面内容调用需求生成或者编写标签所需代码;
④嵌套标签代码到输出页面对应位置;
⑤测试调试模板文件,保证调用和设计效果一致;
⑥将模板标签、文件上传到模板目录;
⑦在系统设定模板目录,重新生成全站;
11
Copyright?2002-2012DesDevINC.All rightsreserved.
第三章模板文件及目录结构
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}/templets/default 这个文件夹的模板,如果你下载了一套新的模板,你可以不必要删除default 原
有的文件,把下载的模板文件夹命名你想要的风格名称,如style2 等,然后在后台修改了默认的模板风格
名称为style2,那系统将使用{cmspath}/templets/style2 这文件当作默认模板,但是若你手工指定了栏目模
板的位置,则后台参数风格的定义无效。
12
Copyright?2002-2012DesDevINC.All rightsreserved.
3.2.1概念,设计和使用模板
板块(封面)模板
指网站主页或比较重要的栏目封面频道使用的模板,一般用“index_识别ID.htm”命名,此外,用户单
独定义的单个页面或自定义标记,也可选是否支持板块模板标记,如果支持,系统会用板块模板标记引擎
去解析后才输出内容或生成特定的文件。
列表模板
指网站某个栏目的所有文章列表的模板,一般用“list_识别ID.htm” 命名。
档案模板:
表示文档查看页的模板,如文章模板,一般用“article_识别ID.htm” 命名。
其它模板:
一般系统常规包含的模板有:主页模板、搜索模板、RSS、JS编译功能模板等,此外用户也可以自定
义一个模板创建为任意文件。
3.2.2命名规则
模板保存位置
模板目录:{cmspath}/templets/样式名称(英文,默认为default,其中system为系统底层模板,plus
为插件使用的模板)/具体功能模板文件}
模板文件命名规范
1 index_识别ID.htm:表示板块(栏目封面)模板;
2 list_识别ID.htm:表示栏目列表模板;
3 article_识别ID.htm:表示内容查看页(文档模板,包括专题查看页);
4 search.htm:搜索结果列表模板;
5 index.htm:主页模板;
注:[识别ID]可以在“频道模型管理”的地方获得,当然,你也可以在“频道模型管理”的地方确定某个频道
13
Copyright?2002-2012DesDevINC.All rightsreserved.
的模板命名。
例:list_image.htm 表示是就是内容类型为图片集的栏目默认列表模板。
article_article.htm 表示的是文章查看页模板。
3.3其它模板说明
默认底层模板
位置:{cmspath}/templets/system
功能:在没有指定标记的默认底层模板的时候,系统将自动调用这个文件夹的相应文件作为底层模板。
插件目录模板
位置:{cmspath}/templets/plus
功能:评论、友情链接、RSS地图等模板。
会员后台模板
位置:{cmspath}/member/templets
功能:会员后台的模板。
系统后台模板
位置:{cmspath}/dede/templets
功能:系统后台管理的模板
14
Copyright?2002-2012DesDevINC.All rightsreserved.
第四章模板引擎介绍
DedeCMS从V5开始采用了解析式引擎与编译式引擎并存的模式,由于在生成HTML时,解析式引擎拥有
巨大的优势,但对于动态浏览的互动性质的页面,编译式引擎更实用高效,织梦CMS采用双引擎并存的
模式,在保持标签风格一致性的同时,也保证将来开发更多互动模块时有更好的性能。
4.1静态模板引擎
4.1.1核心文件
include/dedetag.class.php
4.1.2功能描述
DedeCMSV5.3及之前版本使用的主要的模板类,它是解析式模板类,并非编译式的。
注:编译式是通过获得标签位置进行内容替换,编译式是直接解析为PHP代码,二次执行。
4.1.3模板语法
织梦模板引擎是一种使用XML名字空间形式的模板解析器,使用织梦解析器解析模板的最大好处是
可以轻松的制定标记的属性,感觉上就像在用HTML一样,使模板代码十分直观灵活,新版的织梦模板引
擎不单能实现模板的解析还能分析模板里错误的标记。
织梦模板引擎的代码样式
{dede:标记名称属性='值'/}
{dede:标记名称属性='值'}{/dede:标记名称}
{dede:标记名称属性='值'}自定义样式模板(InnerText){/dede:标记名称}
注:如果使用带底层模板的标记,必须严格用{dede:标记名称属性='值'}{/dede:标记名称} 这种格式,否
则会报错。
内置系统标记
①global 标记,表示获取一个外部变量,除了数据库密码之外,能调用系统的任何配置参数,形式为:
{dede:globalname='变量名称'}{/dede:global}
15
Copyright?2002-2012DesDevINC.All rightsreserved.
或
{dede:globalname='变量名称'/}
其中变量名称不能加$符号,如变量$cfg_cmspath,应该写成{dede:globalname='cfg_cmspath'/}。
②foreach 用来输出一个数组,形式为:
{dede:foreacharray='数组名称'}[field:key/] [field:value/]{/dede:foreach}
③include 引入一个文件,形式为:
{dede:includefile='文件名称' ismake='是否为dede板块模板(yes/no)'/}
对文件的搜索路径为顺序为:绝对路径、include 文件夹,CMS安装目录,CMS主模板目录
自定义函数使用
{dede:标记名称属性='值' function='youfunction("参数一","参数二","@me")'/}
其中@me用于表示当前标记的值,其它参数由你的函数决定是否存在,例如:
{dede:fieldname='pubdate'function='strftime("%Y-%m-%d%H:%M:%S","@me")'/}
织梦标记允许有限的编程扩展
格式为:
{dede:tagnamerunphp='yes'}
$aaa=@me;
@me="123456";
{/dede:tagname}
@me表示这个标记本身的值,因此标记内编程是不能使用echo之类的语句的,只能把所有返回值传递给
@me。
此外由于程序代码占用了底层模板InnerText的内容,因此需编程的标记只能使用默认的InnerText。
4.2动态模板引擎
4.2.1核心文件
include/dedetemplate.class.php
4.2.2功能描述
用于非核心模块的动态页面或列表页的模板解析,如:member/content_list.php,通常是在
16
Copyright?2002-2012DesDevINC.All rightsreserved.
datalistcp.class.php中使用,这个类在动态运行的情况下,由于本身是把模板编译成PHP的,因此性能上
会优级于旧的解析类,这个方法将在未来版本中作为通用的方式。
4.2.3使用方法
$tpl=newDedeTemplate(
模板对象实例名称,通常是'tpl',
[模板存放目录(生成缓存时会存放在这个目录),
include 语法默认引用目录]
);
通常情况下参数二和参数三是不必要的,如:
$tpl=newDedeTemplate('tpl');
如果在类文件中调用,应该加上设置:
$this->tpl->SetObject($this);
在一些块调用中默认将使用当前类的成员函数。
$tpl->LoadTemplate(模板的物理路径);
如果模板中带有{dede:configname=''value=''/}
可以在载入模板后,通过$tpl->GetConfig($name) 获得这些变量的值。
显示页面或保存页面为文件
$tpl->Display();
$tpl->SaveTo(物理绝对路径的文件名);
4.2.4标记语法
标记通用特性
①短标记
{dede:tagname.name/}
等同于
{dede:tagnamename=''/}
②块标记
17
Copyright?2002-2012DesDevINC.All rightsreserved.
{dede:tagname}
循环代码
{/dede:tagname}
标记的具体语法及对应的PHP代码
①配置变量
{dede:configname=''value=''/}
配置变量可以在载入模板后通过$tpl->GetConfig($name) 获得,仅作为配置,不在模板中显示。
②短标记
{dede:global.name/} 外部变量 等同于<?phpecho$name;?>
{dede:var.name/} var数组 等同于<?phpecho$_vars['name'];?>
{dede:field.name/} field数组 等同于<?phpecho$fields['name'];?>
{dede:cfg.name/} 系统配置变量等同于<?phpecho$cfg_name;?>
考虑到大多数情况下都会在函数或类中调用模板,因此$_vars、$fields 数组必须声明为global 数组,否
则模板引擎无法获得它的值从而导致产生错误。
③自由调用块标记
{tag:blocknamebind='GetArcList'bindtype='class'}
循环代码
{/tag:blockname}
必要属性:
bind 数据源来源函数
bindtype 函数类型,默认是class 可选为sub
rstype 返回结果类型,默认是array ,可选项为string
自定义函数格式必须为function(array$atts,object$refObj,array$fields);
在没有指定bind绑定的函数的情况下,默认指向MakePublicTag($atts,$tpl->refObj,$fields)统一管理。
④固定块标记
1.datalist
从绑定类成员函数GetArcList中获取数组并输出
{dede:datalist}
循环代码
{/dede:datalist}
18
Copyright?2002-2012DesDevINC.All rightsreserved.
遍历一个二给维数组,数据源是固定的,只适用用类调用。
等同于
{tag:blocknamebind='GetArcList'bindtype='class'rstype='arrayu'}
循环代码
{/tag:blockname}
2.label
从绑定函数中获取字符串值并输出
等同于{tag:blocknamebind='func'bindtype='sub'rstype='string'/}
3.pagelist
从绑定类成员函数GetPageList中获取字符串值并输出
等同于{tag:blocknamebind='GetPageList'bindtype='class'rstype='string'/}
4.include
{dede:includefile=''/}
{dede:includefilename=''/}
5.php
{dede:php
php代码
/}
或
{dede:php}
php代码
{/dede:php}
6.If
仅支持if ,else ,else 直接用{else}表示,但不支持{elseif}这样的语法,一般建议模板中不要使用太复杂
的条件语法,如果确实有需要,可以直接使用php语法。
{dede:if 条件}a-block {else}b-block{/dede:if}
条件中允许使用var.name、global.name 、field.name、cfg.name表示相应的变量。
如:
{dede:iffield.id>10}
{/dede:if}
19
Copyright?2002-2012DesDevINC.All rightsreserved.
7.遍历一个array 数组
{dede:array.name}
{dede:key/}={dede:value/}
{/dede:array}
各种语法的具体编译后的代码,可查看dedetemplate.class.php的functionCompilerOneTag(&$cTag)。
4.3模板标签
4.3.1标签介绍
从上面的章节中我们可以获知,织梦模板引擎分为编译式和解析式,系统的标签同样也有这样的划分。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论