DEDECMS标签手册.docx_第1页
DEDECMS标签手册.docx_第2页
DEDECMS标签手册.docx_第3页
DEDECMS标签手册.docx_第4页
DEDECMS标签手册.docx_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

模板语法织梦模板引擎是一种使用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:foreachinclude引入一个文件,形式为: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:tagnameme表示这个标记本身的值,因此标记内编程是不能使用echo之类的语句的,只能把所有返回值传递给me。此外由于程序代码占用了底层模板InnerText的内容,因此需编程的标记只能使用默认的InnerText。标记语法标记通用特性短标记dede:/等同于dede:tagname name= /块标记dede:tagname循环代码/dede:tagname标记的具体语法及对应的PHP代码配置变量dede:config name= value=/配置变量可以在载入模板后通过$tpl-GetConfig($name)获得,仅作为配置,不在模板中显示。短标记dede:/外部变量等同于dede:/ var数组等同于dede:/ field数组等同于dede:/系统配置变量等同于考虑到大多数情况下都会在函数或类中调用模板,因此$_vars、$fields数组必须声明为global数组,否则模板引擎无法获得它的值从而导致产生错误。自由调用块标记tag:blockname bind=GetArcList bindtype=class循环代码/tag:blockname必要属性:bind数据源来源函数bindtype函数类型,默认是class可选为subrstype返回结果类型,默认是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:blockname2.label从绑定函数中获取字符串值并输出等同于tag:blockname bind=func bindtype=sub rstype=string/3.pagelist从绑定类成员函数GetPageList中获取字符串值并输出等同于tag:blockname bind=GetPageList bindtype=class rstype=string/4.includedede:include file=/dede:include filename=/5.phpdede:phpphp代码/或dede:phpphp代码/dede:php6.If仅支持if,else,else直接用else表示,但不支持else if这样的语法,一般建议模板中不要使用太复杂的条件语法,如果确实有需要,可以直接使用php语法。dede:if条件 a-block else b-block /dede:if条件中允许使用、、、表示相应的变量。如:dede:if field.id10 /dede:if7.遍历一个array数组dede: dede:key/ = dede:value/dede:array各种语法的具体编译后的代码,可查看dedetemplate.class.php的function CompilerOneTag(&$cTag)。标签的分类每个标签都会有他的作用域,上文中我们可以了解系统文档页面可以分为:封面、列表、内容几个部分,每个页面的模板则会涉及到不同的标签,所以标签也有了他的作用域,我们在模板制作过程中主要根据模板的作用域来对模板进行如下划分:全局标签可以在前台文档任意页面使用的模板标记,例如:arclist、channel、sql、loop等。列表标签仅在模板*_list.htm中可以使用的标签,例如:list、pagelist。内容标签仅在模板*_.article.htm中可以使用的模板标记,例如:likearticle、pagebreak等。模块标签仅在特定的模块、插件中使用的模板标记全局标签arclist文档列表(DedeCMS 3.0,DedeCMS 4,DedeCMS 5)名称:arclist功能:用于获取系统主从表模型(如:文章、软件、图集、商品等)的一列文档,也称自由列表块标记,其中imglist、imginfolist、specart、coolart、autolist都是由该标记所定义的不同属性延伸出来的别名标记。语法:dede:arclist flag=h typeid= row= col= titlelen= infolen= imgwidth= imgheight= listtype= orderby= keyword= limit=0,1field:title/dede:arclist文件:includetaglibarclist.lib.phpfunction lib_arclist(&$ctag,&$refObj)默认底层模板:imglist:part_imglist.htmimginfolist:part_imginfolist.htmarclist:part_arclist.htm参数:col=分多少列显示(默认为单列),5.3版中本属性可以通过多种方式进行多行显示如果col=1要多列显示的可用div+css实现以下为通过div+css实现多列的范例:divwidth:400px;float:left;dede:arclist row=10 titlelen=24 orderby=pubdate idlist= col=2field:textlink/(field:pubdate function=MyDate(m-d,me)/)/dede:arclist当col1将使用原来的table多列方式显示row=10返回文档列表总数typeid=栏目ID,在列表模板和档案模板中一般不需要指定,在首页模板中允许用,分开表示多个栏目;getall=1在没有指定这属性的情况下,在栏目页、文章页模板,不会获取以,分开的多个栏目的下级子类titlelen = 30标题长度等同于titlelengthinfolen=160表示内容简介长度等同于infolength(只控制infos,并不控制description的内容)imgwidth=120缩略图宽度imgheight=90缩略图高度listtype=all栏目类型image含有缩略图commend推荐orderby=sortrank文档排序方式lorderby=hot或orderby=click表示按点击数排列lorderby=sortrank或orderby=pubdate按出版时间排列lorderby=nearlorderby=lastpost按最后评论时间lorderby=scores按得分排序lorderby=id按文章ID排序lorderby=rand随机获得指定条件的文档列表keyword=含有指定关键字的文档列表,多个关键字用,分innertext = 单条记录样式aid=指定文档IDidlist =提取特定文档(文档ID)channelid频道IDlimit=起始ID,记录数(起始ID从0开始)表示限定的记录范围(如:limit=1,2表示从ID为1的记录开始,取2条记录)flag = h自定义属性值:头条h推荐c图片p幻灯f滚动s跳转j图文a加粗bnoflag = 同flag,但这里是表示不包含这些属性orderway=desc值为desc或asc,指定排序方式是降序还是顺向排序,默认为降序subday=天数表示在多少天以内的文档底层字段:ID(同id),typeid,sortrank,flag,ismake,channel,arcrank,click,money,title,shorttitle,color,writer,source,litpic(同picname),pubdate,senddate,mid, lastpost,scores,goodpost,badpost,notpost,description(同infos),filename, image, imglink, fulltitle, textlink, typelink,plusurl, memberurl, templeturl,stime(pubdate的0000-00-00格式)其中:textlink = titletypelink = typenameimglink=image = 注:字段调用方法field:varname/,同样适用于其他标签如:dede:arclist infolen=100field:textlink/field:infos/dede:arclist底层模板里的Field实现也是织梦标记的一种形式,因此支持使用PHP语法,Function扩展等功能。如:给当天发布的内容加上(new)标志field:senddate runphp=yes$ntime = time();$oneday = 3600 * 24;if($ntime - me)$oneday) me = (new);else me = ;/field:senddatearclistsg独立单表模型文档列表(DedeCMS 5.3)名称:arclistsg功能:类似arclist标签,获取指定单表模型(例如:分类信息),指定栏目,指定排序及呈现样式的一列文档语法:dede:arclistsg flag=h typeid= row= col= titlelen= orderway= keyword= limit=0,1field:title/dede:arclistsg文件:includetaglibarclistsg.lib.phpfunction lib_arclistsg(&$ctag,&$refObj)默认底层模板:part_arclistsg.htm参数:col=分多少列显示(默认为单列),5.3版中本属性无效,要多列显示的可用div+css实现row=10返回文档列表总数typeid=栏目ID,在列表模板和档案模板中一般不需要指定,在封面模板中允许用,分开表示多个栏目;titlelen = 30标题长度等同于titlelengthorderwey=desc或asc排序方向keyword=含有指定关键字的文档列表,多个关键字用,分innertext = field:title/单条记录样式(innertext是放在标签之间的代码)arcid=指定文档IDidlist =提取特定文档(文档ID)channelid = 频道IDlimit=起始,结束表示限定的记录范围(如:limit=1,2)flag = h自定义属性值:头条h推荐c图片p幻灯f滚动s跳转j图文a加粗bsubday=天数表示在多少天以内的文档底层字段:ID(同id),typeid, channel, arcrank, mid, click, title, senddate, flag, litpic(同picname), userip, lastpost, scores, goodpost, badpost, textlink范例:这个标签用于调用单表模型的内容,在V5.3系统中加入了单表模型的概念,脱离了以前的主从表的数据表关联结构,一般我们在添加内容模型的时候会选择是否为单表模型还是主从表模型。我们可以进入系统后台核心-内容模型管理,查看系统现有的内容模型,在系统默认环境下,只有分类信息是单表模型,一般添加单表模型,模型的id号都小于-1,即分类信息模型id号为-8。在使用这个标签的时候,使用方法同arclist大致相同,我们来通过以下的标签内容来调用分类信息的内容:dede:arclistsg channelid=-8 limit=0,2 field:title/ /dede:arclistsg这个标签就是调用分类信息的内容,从id为0开始调用2条记录,在系统后台的全局标签测试中显示以下的内容:arcpagelist arclist列表分页(DedeCMS5.6)名称:arcpagelist功能:通过制定arclist的pagesize及tagid属性,配合arcpagelist标签进行内容当前分页中显示,DedeCMS 5.8中将取消这个标签的使用语法:dede:arclist flag=c titlelen=42 row=16 tagid=dedecms pagesize=8 field:title/dede:arclistdede:arcpagelist tagid=dedecms/文件:includetaglibarcpagelist.lib.phplib_arcpagelist(&$ctag, &$refObj)默认底层模板:无参数:tagid=对应arclist的标签名称底层字段:无autochannel指定栏目( DedeCMS 4,DedeCMS 5)名称:autochannel功能:指定排序位置的单个栏目的链接语法:dede:autochannel partsort=2 typeid=1field:typename/dede:autochannel文件:includetaglibautochannel.lib.phpfunction lib_autochannel(&$ctag,&$refObj)默认底册模板:part_autochannel.htm参数:partsort = 0栏目所在的排序位置typeid=0获取单个栏目的顶级栏目底层字段:id,typelink,typedir,isdefault,defaultname,ispart,namerule2,typename,moresite,siteurl,sitepath,listmancattree树形类目(DedeCMS 5.3)名称:cattree功能:树形类目标签语法:dede:cattree typeid= catid= showall=/文件:includetaglibcattree.lib.phplib_cattree(&$ctag, &$refObj)默认底层模板:无参数:typeid=顶级树idcatid=0上级栏目idshowall=在空或不存在时,强制用产品模型id;如果是yes刚显示整个语言区栏目树;为其它数字则是这个数字的模型的id底层字段:无channel获取栏目列表标签(DedeCMS 3,DedeCMS 4,DedeCMS 5)名称:channel功能:织梦常用标记,通常用于网站顶部以获取站点栏目信息,方便网站会员分类浏览整站信息语法:dede:channel type=top row=8 currentstyle=typename field:typename/ /dede:channel文件:includetaglibchannel.lib.phpfunction lib_channel(&$ctag,&$refObj)默认底层模板:channel_list.htm参数:typeid = 0栏目IDreid = 0上级栏目IDrow = 100调用栏目数col = 1分多少列显示(默认为单列)type = son | sunson表示下级栏目,self表示同级栏目,top顶级栏目currentstyle = 应用样式底层字段:ID(同id),typeid, typelink, typename, typeurl,typedir(仅表示栏目的网址)例:dede:channel type=top field:typename/ /dede:channelcurrentstyle中支持rel、id、typelink、typename注:在没有指定typeid的情况下,type标记与模板的环境有关,如,模板生成到栏目一,那么type=son就表示栏目一的所有子类范例:这个标签是全局常用标记,主要用于显示页面的栏目分类,我们可以查看默认模板templetsdefaulthead.htm中的相关代码:dede:channel type=top currentstyle=typename field:typename/dede:channel这里的栏目可以通过后台进行设置,栏目显示顺序按照排序的高低进行,我们可以在系统后台核心-栏目管理中进行栏目设置:设置完成我们可以在首页顶部看到相关的效果当然这里涉及到一个顶级栏目和子级栏目显示的问题,我们可以在模板中使用相应的标签进行调用,我们来看一个封面的页面内容:我们查看这个文章封面templetsdefaultindex_article.htm的模板标签dede:channel type=son currentstyle=typename field:typename/dede:channel这里就使用了type=son这个属性用来显示子栏目,currentstyle则代表当前选中项的呈现样式。很多用户希望顶部导航连接便于SEO,需要去除超链接中的“index.html”,我们可以在这里对标签进行一个修改:dede:channel type=topfield:typename/ /dede:channelchannelartlist当前频道的下级栏目的内容列表(DedeCMS,DedeCMS 4,DedeCMS 5)名称:channelartlist功能:获取当前频道的下级栏目的内容列表标签语法:dede:channelartlist row=6dede:field name=typename/dede:arclist titlelen=42 row=10 field:title / (field:pubdate function=MyDate(m-d,me)/) /dede:arclist/dede:channelartlist文件:includetaglibchannelartlist.lib.phpfunction lib_channelartlist(&$ctag,&$refObj)默认底层模板:part_channelartlist.htm参数:typeid = 0频道ID,多个请用,分开,如果调用1个栏目可以使用typeid=5,0来调用。分隔row = 20获取的栏目返回值其他说明:除了宏标记外,channelArtlist是唯一一个可以直接嵌套其它标记的标记,不过仅限于嵌套dede:type/dede:type和dede:arclist/dede:arclist两个标记。底层字段:包含dede:type/dede:type及dede:arclist/dede:arclist下面所有底层模板变量。范例:这个标签是系统中不多的一个支持嵌套的标签,这个标签通常使用在首页(含封面首页),用于输出一组栏目内容列表,我们可以看到默认模板首页:这部分的内容就是通过这个标签进行显示的,我们可以查看首页模板templetsdefaultindex.htmdede:channelartlistdede:field name=typename/更多.dede:arclist titlelen=60 row=8field:pubdate function=MyDate(m-d,me)/field:title /dede:arclist/dede:channelartlistfeedback评论内容(DedeCMS 4,DedeCMS 5)名称:feedback功能:用于调用最新评论语法:dede:feedback field:username function=(me=guest ? 游客 : me)/对field:title/的评论: field:msg /dede:feedback文件:文件includetaglibfeedback.lib.phpfunction lib_feedback(&$ctag,&$refObj)默认底层模板:tag_feedback.htm参数:row=12调用评论条数titlelen=24标题长度infolen=100评论长度底层字段:id,aid,typeid,username,arctitle,ip,ischeck,dtime,mid,bad,good,ftype,face,msg,title范例:这个标签主要调用系统的会员评论信息,我们在默认模板首页可以查看到相关的内容:我们可以查看首页的模板templetsdefaultindex.htm有如下代码:dede:feedback row=5 titlelen=24 infolen=80 field:username function=(me=guest ? 游客 : me)/评论field:title/field:msg/dede:feedback这里调用的是会员最新评论的内容,当然我们也可以在系统后台的核心-评论管理中对现有的评论进行审核和编辑:在系统-系统基本参数的”互动设置“中也有评论的相关设置选项,可以控制会员评论。field内容变量名称:field功能:用于获取特定栏目或者档案的字段值及常用的环境变量值语法:dede:field name=字段名/或者dede:field.字段名/文件:所有视图类中默认底层模板:无参数:板块模板:phpurl,indexurl,indexname,templeturl,memberurl, specurl列表模板:position,title,phpurl,templeturl,memberurl,indexurl,indexname,specurl,栏目表dede_arctype的所有字段其中position为“栏目一栏目二”这样形式的链接,title则为这种形式的标题文档模板:position,phpurl,templeturl,memberurl,indexurl,indexname,specurl,id(同ID,aid)文档所有内容字段:档案#_archives表和附加表的所有字段。flink友情链接(=DedeCMS 3,DedeCMS 4,DedeCMS 5)名称:flink功能:用于获取友情链接,在DedeCMS系统中已经默认集成友情链接插件,所以无需其他安装即可使用该标签。语法:dede:flink row=24/文件:includetaglibflink.lib.phpfunction lib_flink(&$ctag,&$refObj)默认底层模板:field:link /参数:type=textall链接类型row=24链接数量titlelen=24站点标题文字的长度linktype=1链接位置内页typeid=0友情链接类型,默认为所有类型,可以在系统后台模块-友情链接中的“网站类型管理”中查看。底层字段:url,webname,logo,linkflinktype友情链接类型(= DedeCMS 5.7)名称:flinktype功能:用于获取友情链接类型语法:dede:flinktype type=dedecms field:typename/dede:flinktype文件:includetaglibflinktype.lib.phpfunction lib_flinktype(&$ctag,&$refObj)默认底层模板:field:typename /参数:row=24链接类型数量titlelen=24链接文字的长度底层字段:id,typename范例:dede:flinktype type=dedecms field:typename/dede:flinktype同时flinktype可以同flink标签进行嵌套使用,用于循环生成分类标签,类似channelarclist标签。 dede:flinktype type=dedecms dede:flink/ /dede:flinktypeglobal全局配置变量标签(=DedeCMS 3,DedeCMS 4,DedeCMS 5)名称:global功能:获取系统全局配置变量内容语法:dede:global.cfg_webname/field:global.cfg_webname/用于底层模板中文件:系统模板引擎默认底层模板:无参数:无底层字段:无hotwords搜索关键词(=DedeCMS 3,DedeCMS 4,DedeCMS 5)名称:hotwords功能:获取网站搜索的热门关键字语法:dede:hotwords num=6 subday=365 maxlength=16/文件:includetaglibhotwords.lib.phpfunction lib_hotwords(&$ctag,&$refObj)默认底层模板:无参数:num=6关键词数目subday=365调用天数以内的关键词maxlength=16关键词最大长度底层字段:无json JSON数据调用(=DedeCMS 5.7)名称:json功能:调用某个远程连接的json接口,方便同远程站点之间进行通信来调取内容语法:dede:json url=http:/yoursite/json.php cache=300 field:id/-field:title/dede:json文件:includetaglibjson.lib.phpfunction lib_json(&$ctag,&$refObj)默认底层模板:无参数:url=远程json接口地址注:所传递的数据需要是UTF-8编码格式,否则可能会出现乱码。cache=300缓存时间,0为不缓存底层字段:json传递数组字段范例:我们首先编写一个简单的服务器端API,将其存放在系统根目录/api下,由于系统是GB2312编码,所以服务端编写的时候我们进行了一些编码转换的处理,保证服务端访问的编码是UTF-8即可。SetQuery(SELECT id,title FROM #_archives ORDER BY id DESC LIMIT 0,10);$dsql-Execute(me);while ($row = $dsql-GetArray(me) $rowtitle = gb2utf8($rowtitle); $reval = $row;$json = new Services_JSON(SERVICES_JSON_SUPPRESS_ERRORS);echo $json-encode($reval);?通过地址/api/arcticle.php我们可以访问到刚才编写的服务端文件。下面我们就可以通过标签来进行访问。dede:json url=/api/arcticle.php cache=0 field:id/-field:title/dede:json测试标记结果如下:如果您是想获取单条记录,可以构造如下的数组:$row = $dsql-GetOne(“SELECT * FROM #_archives WHERE id=88”);然后将这个数组通过JSON格式化进行处理。loop万能调用标签(=DedeCMS 3,DedeCMS 4,DedeCMS 5)名称:loop功能:调用任意表的数据标签语法:dede:loop table=dede_archives sort= row=4 if=field:title/dede:loop文件:includetaglibloop.lib.phpfunction lib_loop(&$ctag,&$refObj)默认底层模板:无参数:table=数据表名称tablename=同tablerow=8调用数据的行数sort=用于排序的字段if=查询的条件ifcase=同iforderway=desc排序方式,desc降序、asc升序底层字段:这个标记的底层模板变量即是被查询表的所有字段范例:我们来查询用户id为1的用户发布的文档,可以用下面的标签来表示:dede:loop table=#_archives sort=mid row=4 if=mid=1field:title/(field:mid/)/dede:loop查询结果如下:loop标签同时可以查询跟DedeCMS处在同一个数据库的数据表,如果您的论坛或者商城程序安装在同一数据库,也可以使用loop标签进行调用。memberlist会员列表(=DedeCMS 4,DedeCMS 5)名称:memberlist功能:调用会员列表语法:dede:memberlist orderby=scores row=20dede:field.userid /dede:field.scores /dede:memberlist文件:includetaglibmemberlist.lib.phpfunction lib_memberlist(&$ctag, &$refObj)默认底层模板:memberlist.htm参数:row = 6调用数目iscommend = 0是否为推荐会员orderby

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论