暂时没有公告
当前位置:彤舟信息科技 > 设计教程 > dedeCMS > 正文

【dedeCMS经验】dedecms帮助文档-深入了解dedecms

12-13 dedeCMS

目录
 
版权申明
前言
简介
主题
发行方法
手册Web站点
最后
第一章 织梦模板设计师要求
1.1 设计师定义
1.2 设计师级别划分及要求
第二章 模板制作流程
第三章 模板文件及目录结构
3.1 模板目录
3.2 模板文件与功能说明
3.2.1 概念,设计和使用模板
3.2.2 命名规则
3.3 其它模板说明
第四章 模板引擎介绍
4.1 静态模板引擎
4.1.1 核心文件
4.1.2 功能描述
4.1.3 模板语法
4.2 动态模板引擎
4.2.1 核心文件
4.2.2 功能描述
4.2.3 使用方法
4.2.4 标记语法
4.3 模板标签
4.3.1 标签介绍
4.3.2 标签的分类
第六章 标签参考
6.1 全局标签
arclist 文档列表
arclistsg 独立单表模型文档列表
arcpagelist arclist列表分页
autochannel 指定栏目
cattree 树形类目
channel 获取栏目列表标签
channelartlist 当前频道的下级栏目的内容列表
feedback 评论内容
field 内容变量
flink 友情链接
flinktype 友情链接类型
global 全局配置变量标签
hotwords 搜索关键词
json JSON数据调用
loop 万能调用标签
memberlist 会员列表
myad 广告
mynews 站内新闻
mytag 自定义宏标签
php php标签
softmsg 软件下载提示信息
sonchannel 子栏目调用
sql SQL查询标签
tag TAG调用标签
type 指定栏目调用标签
vote 投票标签
6.2 列表标签
list 列表数据标签
pagelist 列表分页标签
6.3 内容标签
likearticle 相关文档
pagebreak 内容分页标签
pagetitle 分页标题
prenext 获取上一篇、下一篇内容
fieldlist 当前模型内容页字段列表
6.4 模块标签
bookcontentlist连载图书最新内容调用
booklist连载图书调用
group 圈子调用标签
groupthread圈子主题调用标签
6.5 其他标签
infoguide 分类信息的地区与小分类搜索
infolink 分类信息地区与类型快捷链接
第七章 模板扩展
7.1 标签扩展
7.1.1 定义标签
7.1.2 标签文件内容结构
7.1.3 属性处理
7.1.4 底层模板处理
7.2 常用函数
cn_substr
Html2Text
Text2Html
MyDate
GetDateTimeMk
FloorTime
HtmlReplace
RemoveXSS
 
 
 
版权申明
发布本资料须遵守开放出版许可协议 1.0 或者更新版本;
未经版权所有者明确授权,禁止发行本文档及其被实质上修改的版本;
未经版权所有者事先授权,禁止将此作品及其衍生作品以标准(纸质)书籍形式发行;
如果有兴趣再发行或再版本手册的全部或部分内容,不论修改过与否,或者有任何问题,请联系版权所
 
有者tianya(AT)desdev.cn。
对DedeCMS及本手册有任何疑问或者建议,请进入官方论坛 http://bbs.dedecms.com 发布相关讨论。并
 
在此感谢所有参与到DedeCMS项目中的朋友。
有关DedeCMS项目及本文档的最新资料,请及时访问官方主站 http://www.dedecms.com。
本文档及其描述的内容受有关法律的版权保护,对本文档内容的任何形式的非法复制,泄露或散布,将
 
导致相应的法律责任。
 
 
 
前言
简介
本手册是织梦官方推出,用于介绍织梦内容管理系统(以下简称:DedeCMS)模板的制作,为织梦模板设
 
计师提供一份快速检索的操作文档,全面介绍了织梦的模板引擎、标签及常用函数,相信会大大提高模
 
板设计师的制作效率。
DedeCMS的模板引擎采用了官方自行研发的Dede模板引擎,类XML结构的标签简单易懂,便于在网页编辑
 
器中进行编辑。同时标签齐全,应用广泛,这为基于DedeCMS建设开发的站点提供了一个良好的基础,只
 
需要懂HTML就可以搭建您想要的站点,这也是DedeCMS风靡的一个重要因素。
 
 
 
主题
手册将会从以下几个部分进行重点的说明:
织梦模板设计师要求
模板制作流程
模板文件及目录结构
模板引擎介绍
模板标签
模板扩展
 
 
 
发行方法
手册包含在线阅读、PDF、CHM几种发行方式,您可以登录织梦帮助中心来获取最新版本。
 
 
 
手册Web站点
您可以通过手册Web站点同官方取得交流,以及分享您在制作过程中的心得。
帮助中心:http://help.dedecms.com
织梦技术论坛:http://bbs.dedecms.com
 
 
 
最后
编写这本手册,我们不希望他是一个人的项目,希望他有更多热爱织梦、热爱中国开源事业的朋友参与
 
进来。同时也需要对使用、支持DedeCMS的每一位用户提供的帮助、贡献、意见、评论、精神支持以及耐
 
心表示感谢。
 
 
 
第一章 织梦模板设计师要求
本章节介绍织梦模板制作人员所需要的基本条件、所需相关技术。便于企业、单位招聘选择适合自身发
 
展的从业人员及对员工进行定位、培训。
 
1.1 设计师定义
能够设计、制作DedeCMS程序模板的人员。
 
1.2 设计师级别划分及要求
这里根据建站需求,我们将织梦模板设计师进行一个大致的划分:
初级:能够对模板进行修改,例如:元素布局、调用内容等。需要掌握基本的HTML,图形图像处理技术
 
,同时需要对织梦的常用标签有大致的了解。
中级:能够根据设计稿输出页面、嵌套标签,并能够灵活调用DedeCMS内容。需要熟练掌握Div+CSS、
 
Javascript,DedeCMS的模板标签用法,同时需要有一些基本的PHP、MySQL尝试。
高级:能够独立设计网站界面,并能够输出页面、嵌套标签,同时能够根据自己需求扩展编写自己需要
 
的标签以达到站点所需效果。需要熟练掌握图形图像网页设计相关技术、PHP、Javascitpt(jQuery)、
 
织梦模板引擎。
 
 
 
第二章 模板制作流程
织梦模板制作需要经过以下几个流程:
① 设计页面效果图,一般为PSD或者PNG格式的原图;
② 将页面效果图输出为HTML格式,后缀名为“.htm”;
③ 根据页面内容调用需求生成或者编写标签所需代码;
④ 嵌套标签代码到输出页面对应位置;
⑤ 测试调试模板文件,保证调用和设计效果一致;
⑥ 将模板标签、文件上传到模板目录;
⑦ 在系统设定模板目录,重新生成全站;
 
 
 
第三章 模板文件及目录结构
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 这文件当作默认模板,但是
 
若你手工指定了栏目模板的位置,则后台参数风格的定义无效。
 
3.2.1 概念,设计和使用模板
板块(封面)模板
指网站主页或比较重要的栏目封面频道使用的模板,一般用“index_识别ID.htm”命名,此外,用户单
 
独定义的单个页面或自定义标记,也可选是否支持板块模板标记,如果支持,系统会用板块模板标记引
 
擎去解析后才输出内容或生成特定的文件。
列表模板
指网站某个栏目的所有文章列表的模板,一般用 “list_识别ID.htm” 命名。
档案模板:
表示文档查看页的模板,如文章模板,一般用 “article_识别ID.htm” 命名。
其它模板:
一般系统常规包含的模板有:主页模板、搜索模板、RSS、JS编译功能模板等,此外用户也可以自定义一
 
个模板创建为任意文件。
 
3.2.2 命名规则
模板保存位置
模板目录:{cmspath} /templets/样式名称(英文,默认为default,其中system为系统底层模板,plus
 
为插件使用的模板)/具体功能模板文件}
模板文件命名规范
① index_识别ID.htm:表示板块(栏目封面)模板;
② list_识别ID.htm:表示栏目列表模板;
③ article_识别ID.htm:表示内容查看页(文档模板,包括专题查看页);
④ search.htm:搜索结果列表模板;
⑤ index.htm:主页模板;
注: [识别ID]可以在“频道模型管理”的地方获得,当然,你也可以在“频道模型管理”的地方确定某
 
个频道的模板命名。
例:list_image.htm 表示是就是内容类型为图片集的栏目默认列表模板。
article_article.htm 表示的是文章查看页模板。
 
3.3 其它模板说明
默认底层模板
位置:{cmspath}/templets/system
功能:在没有指定标记的默认底层模板的时候,系统将自动调用这个文件夹的相应文件作为底层模板。
插件目录模板
位置:{cmspath}/templets/plus
功能:评论、友情链接、RSS地图等模板。
会员后台模板
位置:{cmspath}/member/templets
功能:会员后台的模板。
系统后台模板
位置:{cmspath}/dede/templets
功能:系统后台管理的模板
 
 
 
第四章 模板引擎介绍
DedeCMS从V5开始采用了解析式引擎与编译式引擎并存的模式,由于在生成HTML时,解析式引擎拥有巨大
 
的优势,但对于动态浏览的互动性质的页面,编译式引擎更实用高效,织梦CMS采用双引擎并存的模式,
 
在保持标签风格一致性的同时,也保证将来开发更多互动模块时有更好的性能。
 
4.1 静态模板引擎
4.1.1 核心文件
include/dedetag.class.php
 
4.1.2 功能描述
DedeCMS V5.3及之前版本使用的主要的模板类,它是解析式模板类,并非编译式的。
注:编译式是通过获得标签位置进行内容替换,编译式是直接解析为PHP代码,二次执行。
 
4.1.3 模板语法
织梦模板引擎是一种使用XML名字空间形式的模板解析器,使用织梦解析器解析模板的最大好处是可以轻
 
松的制定标记的属性,感觉上就像在用HTML一样,使模板代码十分直观灵活,新版的织梦模板引擎不单
 
能实现模板的解析还能分析模板里错误的标记。
织梦模板引擎的代码样式
{dede:标记名称 属性='值'/}
{dede:标记名称 属性='值'}{/dede:标记名称}
{dede:标记名称 属性='值'}自定义样式模板(InnerText){/dede:标记名称}
 
注:如果使用带底层模板的标记,必须严格用{dede:标记名称 属性='值'}{/dede:标记名称} 这种格式
 
,否则会报错。
 
内置系统标记
① global 标记,表示获取一个外部变量,除了数据库密码之外,能调用系统的任何配置参数,形式为
 
:{dede:global name='变量名称'}{/dede:global}或{dede:global name='变量名称'/}其中变量名称不
 
能加$符号,如变量$cfg_cmspath,应该写成{dede:global name='cfg_cmspath'/}。
② foreach 用来输出一个数组,形式为:{dede:foreach array='数组名称'}[field:key/] 
 
[field:value/]{/dede:foreach}
③ include 引入一个文件,形式为:{dede:include file='文件名称' ismake='是否为dede板块模板
 
(yes/no)'/}对文件的搜索路径为顺序为:绝对路径、include文件夹,CMS安装目录,CMS主模板目录自
 
定义函数使用{dede:标记名称 属性='值' function='youfunction("参数一","参数二","@me")'/}其中 
 
@me 用于表示当前标记的值,其它参数由你的函数决定是否存在,例如:{dede:field name='pubdate' 
 
function='strftime("%Y-%m-%d %H:%M:%S","@me")'/}织梦标记允许有限的编程扩展
 
格式为:
{dede:tagname runphp='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 ,通常是在 
 
datalistcp.class.php 中使用,这个类在动态运行的情况下,由于本身是把模板编译成PHP的,因此性
 
能上会优级于旧的解析类,这个方法将在未来版本中作为通用的方式。
 
4.2.3 使用方法
$tpl = new DedeTemplate(
模板对象实例名称,通常是'tpl', 
[模板存放目录(生成缓存时会存放在这个目录),
include语法默认引用目录]
);
通常情况下参数二和参数三是不必要的,如:
$tpl = new DedeTemplate('tpl');
如果在类文件中调用,应该加上设置:
$this->tpl->SetObject($this); 
在一些块调用中默认将使用当前类的成员函数。
$tpl->LoadTemplate(模板的物理路径);
如果模板中带有 {dede:config name='' value=''/} 
可以在载入模板后,通过 $tpl->GetConfig($name) 获得这些变量的值。
 
显示页面或保存页面为文件
$tpl->Display();
$tpl->SaveTo(物理绝对路径的文件名);
 
4.2.4 标记语法
标记通用特性
① 短标记
{dede:tagname.name/}
等同于
{dede:tagname name='' /}
② 块标记
{dede:tagname}
循环代码
{/dede:tagname}
标记的具体语法及对应的PHP代码
① 配置变量
{dede:config name='' value=''/}
配置变量可以在载入模板后通过 $tpl->GetConfig($name) 获得,仅作为配置,不在模板中显示。
② 短标记
{dede:global.name/}   外部变量      等同于 <?php echo $name; ?>
{dede:var.name/}      var数组       等同于 <?php echo $_vars['name']; ?>
{dede:field.name/}    field数组     等同于 <?php echo $fields['name']; ?>
{dede:cfg.name/}      系统配置变量  等同于 <?php echo $cfg_name; ?>
考虑到大多数情况下都会在函数或类中调用模板,因此 $_vars、$fields 数组必须声明为 global 数组
 
,否则模板引擎无法获得它的值从而导致产生错误。
③ 自由调用块标记
{tag:blockname bind='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}
遍历一个二给维数组,数据源是固定的,只适用用类调用。
等同于 
{tag:blockname bind='GetArcList' bindtype='class' rstype='arrayu'}
循环代码
{/tag:blockname}
2.label
从绑定函数中获取字符串值并输出
等同于 {tag:blockname bind='func' bindtype='sub' rstype='string'/}
3.pagelist
从绑定类成员函数GetPageList中获取字符串值并输出
等同于 {tag:blockname bind='GetPageList' bindtype='class' rstype='string'/}
4.include
{dede:include file=''/}
{dede:include filename=''/}
5.php
{dede:php
php 代码
/}
{dede:php}
php代码
{/dede:php}
6.If
仅支持 if ,else ,else 直接用{else}表示,但不支持{else if}这样的语法 ,一般建议模板中不要使
 
用太复杂的条件语法,如果确实有需要,可以直接使用 php 语法。
{dede:if 条件} a-block  {else} b-block {/dede:if}
条件中允许使用 var.name 、global.name 、field.name、cfg.name 表示相应的变量。
如:
{dede:if field.id>10 }
{/dede:if}
7.遍历一个 array 数组
{dede:array.name}
  {dede:key/} = {dede:value/}
{/dede:array}
各种语法的具体编译后的代码,可查看dedetemplate.class.php的function CompilerOneTag(&$cTag)。
 
4.3 模板标签
4.3.1 标签介绍
从上面的章节中我们可以获知,织梦模板引擎分为编译式和解析式,系统的标签同样也有这样的划分。
 
我们在系统涉及到内容管理及生成HTML的地方大多采用了解析式的模板标签,一些互动部分的功能,如
 
果使用了织梦编译式的模板引擎,也会涉及到编译式的标签,在模板制作和日常的站点维护中,我们大
 
多接触的是解析式的模板标签,也是本章标签介绍的重点。
解析式标签所在的目录为系统根目录下/include/taglib中,编译式涉及到的标签文件存在放根目录
 
下/include/tpllib中,这部分的扩展内容会在随后的章节中详细介绍。
 
4.3.2 标签的分类
每个标签都会有他的作用域,上文中我们可以了解系统文档页面可以分为:封面、列表、内容几个部分
 
,每个页面的模板则会涉及到不同的标签,所以标签也有了他的作用域,我们在模板制作过程中主要根
 
据模板的作用域来对模板进行如下划分:
全局标签
可以在前台文档任意页面使用的模板标记,例如:arclist、channel、sql、loop等。
列表标签
仅在模板*_list.htm中可以使用的标签,例如:list、pagelist。
内容标签
仅在模板*_.article.htm中可以使用的模板标记,例如:likearticle、pagebreak等。
模块标签
仅在特定的模块、插件中使用的模板标记


Copyright ©2002 - 2012 DesDev INC.All rights reserved
 
 
 
 



点击加入QQ群
彤舟信息科技
www.tzpc120.com
公众号:TongzhouPC

版权声明: 本文由 彤舟信息科技 编辑制作,转载请保留链接: http://www.tzpc120.com/a/design/dedeCMS/43.html