寂寞天涯的教程织梦dedecms 自己制作标签教程

合集下载

DedeCms的Mytag 标记

DedeCms的Mytag 标记

今天来介绍下自定义宏标记的应用,大家可以进入后台,在“模板管理”-》“自定义宏标记”中查看到该选项。

自定义宏标记的作用:可以将模板中多次出现的相同元素用一个自定义标记表示出来,从而达到,一次更改,全局更换的效果。

辅助插件的广告管理也有相似的效果。

适用范围:网页模板中多次出现的相同元素,例如:网站的导航条、网站的站点公告、网站的底部信息等,在我之前发布的几套模板中都运用到了自定义宏标记。

自定义宏标记的调用办法:{dede:mytag name='标记名称' ismake='是否含板块代码(yes 或no)' typeid='栏目ID'/}1、name 标记名称,该项是必须的属性,以下2、3是可选属性;2、ismake 默认是no 表示设定的纯HTML代码,yes 表示含板块标记的代码;3、typeid 表示所属栏目的ID,默认为0 ,表示所有栏目通用的显示内容,在列表和文档模板中,typeid默认是这个列表或文档本身的栏目ID。

下面来通过一个实例进行说明:我有一个网站模板底部信息,其长度已经超出了系统可以设置的网站版权(cfg_powerby)的长度,但是我想实现一段代码,可以在不同模板(页面)中显示相同内容的效果。

我们就可以使用自定义宏标记来实现这个效果如图进行设置:然后我们回到模板制作的界面,将模板中的{dede:global name='cfg_powerby'/},替换为我们设置的自定义宏标记:{dede:mytag name='footer'/},更新下,是不是已经变为我们设置的标记内容了啊。

当然,自定义宏标记里面也可以加入dedecms的标记内容,适合当前栏目的显示内容,不过需要在调用代码中将ismake设为yes才可以,也可以通过设置typeid使自定义宏标记在特定栏目中显示。

有人会问,我已经生成了很多页面了,现在想更改了一下自定义宏标记的内容,那岂不是要更改后重新再生成一遍,那样就不方便了。

一个完整的网站制作dedecms标签

一个完整的网站制作dedecms标签

1、网页头部标题Index页面标题<title> {dede:global.cfg_webname/} </title>子页页面标题<title> {dede:field.title/}_{dede:global.cfg_webname/} </title>2、导航栏‘首页’项href 的织梦标签<a href=" {dede:global.cfg_webnameurl/} /cms " > //cms 在后台系统设置里面找到3、面包屑导航代码:<span class="fr prp">当前位置:{dede:field name='position'/} </span>4、CSS 引用织梦内部相对路径<link href=" {dede:global.cfg_templets_skin/}/ css/common.css" rel="stylesheet" type="text/css" />其中{dede:global.cfg_templets_skin/}/为织梦定义的内部样式相对路径需添加在相应位置5、img 的相对路径<img src="{dede:global.cfg_templets_skin/}/images/img_banner1.png"alt="实验室搅拌器荣获国家三一产品" />其中dede:global.cfg_templets_skin/}/ 为织梦内部定义的网页中图片的相对路径需添加在每一个图片前面可以在dreamweaver 中用ctrl+ F 然后进行全部替换6、头部、底部制作成单独的页面时的引用语句{dede: include filename="head.html" /}当把页面头部、底部制作成单独的页面时可以把它们添加到别的网页相应位置已达到多次的调用7、导航栏的循环输出与最后一个项目的后面竖线的消除{dede:channel type='top' }<li [field:global name='autoindex' runphp='yes'] if (@me==6){ @me= 'class="lineNone" ';}else{@me='';}[/field:global]><a href="[field:typeurl/]" title="[field:typename/]">[field:typename/]</a>{/dede:channel}其中A{dede:channel type='top' }与{/dede:channel}成对出现用来表示导航条然后进行一次循环输出每一项其中需type = top 表示是顶级导航条B <a href="[field:typeurl/]" title="[field:typename/]">[field:typename/]</a>[field:typeurl/] 表示为每一项导航条索对应的链接位置[field:typename/] 表示为每一项导航条的名字C [field:global name='autoindex' runphp='yes'] if (@me==6){ @me='class="lineNone" ';}else{ @me ='';}[/field:global] 表示为导航条最后一项右边多出一个竖线进行判断然后引用CSS样式linenone 取消竖线8、首页中每一块的显示标签arclist{dede:arclist titlelen=42 row=5 typeid='13' }<!-- row=5 typeid='13'必须写说明调用的位置--> <li> <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a><span class="fr">[[field:pubdate function="MyDate('m-d',@me)"/]] </span> </li>{/dede:arclist}typeid='13' 说明该块所属的导航栏属于哪一项必须填写9、关于客户案例最下面一条信息底部多出一条细线的解决办法代码:{dede:arclist typeid='5' row='2' titlelen = '10' infolen='20'}<li [field:global name='autoindex' runphp='yes']if(@me==2){@me=" class='borderNone'";}else{@me='';}[/field:global]> // 此处为解决多出的一条线的方法<a href="[field:arcurl/]" class="fl" title=""><img src="[field:litpic/]" width="116" height="80" alt="" /></a><p class="fr"> <strong><a href="[field:arcurl/]"> [field:title/]...</a></strong><br />[field:description function='cn_substr(@me,80)'/] // 解决内容的现实字数问题</p><div class="cl"></div></li>{/dede:arclist}10、文章详细页列表页下面的内容分篇效果代码:<div class="dede_pages"><ul class="pagelist">{dede:pagelist listitem="info,index,end,pre,next,pageno" listsize="2"/} </ul><div class="cl"></div></div>【织梦代码】{dede:pagelist listitem="info,index,end,pre,next,pageno" listsize="2"/}CSS样式:.dede_pages{text-align:center;}.dede_pages ul{float:left;padding:12px 0px 12px 16px;}.dede_pages ul li{float:left;font-family:Tahoma;line-height:17px;margin-right:6px;border:1px solid #E9E9E9;padding:2px 4px 2px;}.dede_pages ul li a{float:left;/*padding:2px 4px 2px;*/color:#555;display:block;}.dede_pages ul li a:hover{color:#690;text-decoration:none;/*padding:2px 4px 2px;*/}.dede_pages ul li.thisclass,.dede_pages ul li.thisclass a,.pagebox ul li.thisclass a:hover{background-color:#F8F8F8;padding:2px 4px 2px;font-weight:bold;}.dede_pages .pageinfo{/*line-height:21px;padding:12px 10px 12px 16px;*/color:#999;}.dede_pages .pageinfo strong{color:#555;font-weight:normal;margin:0px 2px;}11、文章详细页下面的分篇效果代码:<div class="pages"><p>{dede:prenext get='pre'/}</p> //上一页织梦专用代码<hr/><p>{dede:prenext get='next'/}</p> //下一页织梦专用代码</div>CSS样式代码:.pages { margin:20px 10px;}.pages p{ margin-left:0; font-size:14px;}12、文章列表效果代码:<div class="pagenewsList"><ul>{dede:list pagesize=4 } // pagesize=4 含义是一个页面上出现4条新闻如上所示<li><p><a href="[field:arcurl/]">[field:title/]</a><span class="fr">[[field:pubdate function="MyDate('Y-m-d',@me)"/]]</span></p>//[field:title/] 表示新闻内容span中包含的是新闻右端的时间</li>{/dede:list}</ul><div class="cl"></div></div>CSS样式:.pagenewsList ul li { line-height:30px; border-bottom:1px dotted #666; background:url(../images/icon_pageLeft.png) no-repeat left center; padding-left:18px;} //background 表示的是新闻左端的小图标li 的背景的形式出现.pagenewsList ul li p span{ padding-right:10px;}13、针对栏目“关于我们”是单页面进行如下设置:注意:单页页面高级选项里面只需设置封面模板即可单页里面的内容一般不会改动所以添加在栏目内容(源码)中然后在页面中相应位置调用用代码{dede:field.content/}即可14、建立“在线留言”栏目所需的表单A 登陆后台核心→频道模型→自定义表单→增加新的自定义表单→自定义表单名称→确定B 选中刚才建立的表单管理选框里面的更改添加新字段然后表单提示文字:/字段名称:/数据类型:/默认值: 依次填写最后确定这样建好一个字段仿照上面再次建立别的字段C 建好字段之后点击确定然后里面点击前台预览此时会生成一个页面D 页面生成后点击右上角发布信息会出现所建立的所有字段E 然后查看网页源代码找到整个表单的代码复制到相应的模板的表单位置即可15、网页底部的友情链接的更改把代码<ul><li><a href=" /">河南做网站</a></li><li><a href="/">郑州做网站</a></li> ......... 后面有若干个<li> 。

DedeCMS V5.3 模板标签参考手册

DedeCMS V5.3 模板标签参考手册

DedeCMS V5.3 模板标签参考手册
来源:织梦官方作者:admin发表于:2009-09-29 12:24点击:10001
DedeCMS V5.3 常用问题手册发布这里天涯收集了用户在论坛或者QQ中的一些问题,总共分为概念篇、安装篇、升级篇、整合篇、使用篇、销售篇、其他类几个部分,每个部分选了用户常见的一些使用问题,将其打包为CHM文件,提供大家下载阅读,并且手册会以后进行
DedeCMS V5.3 模板标签参考手册发布
这是DedeCMS V5.3版本的标签手册,手册方便用户制作模板、学习系统所编写,之前在织梦的帮助中心有相关的标签内容,这里我将其整理并且重新进行了一些编辑,为了方便大家使用,讲内容大包为CHM格式,手册含有基本的标签说明、相关二次开发函数,并且列举了标签常用使用的几个说明。

手册将不断更新整理内容,希望大家在标签方面有什么好的想法即时同我取得联系,可以发送到邮箱[url=mailto:tianya@]tianya@[/url] 中。

DEDE一些实用标签及自定义标签方法

DEDE一些实用标签及自定义标签方法

DEDE一些实用标签及自定义标签方法栏目首页:取得当前栏目的id {dede:field name='id'/}当前栏目名称: {dede:field name='typename'/}栏目列表页:取得当前栏目的id {dede:field name='id'/}当前栏目名称: {dede:field name='typename'/}文章内容页:取得当前文章的id: {dede:field name='id'/}当前文章所属栏目名称: {dede:field name='typename'/}其它标签:用于循环和遍历中的计数器(每次+1): [field:global name=autoindex/]将中文截取指定字节数: [field:title function='cn_substr(@me,16)'/]{dede:sql}标签:sql标签可以称得上是个万能标签了,查询数据库将其输出:1.用来输出统计内容,这个是不错的,举个例子,我们来统计下总共发了多少的文章,思路就是输出dede_addonarticle这个文章附加表内容总数就可以了。

{dede:sql sql="SELECT COUNT(*) AS nums FROM dede_add onarticle"}[field:name = "nums"/]{/dede:sql}2.使用~field~来进行特殊的查询,比如之前论坛上面很多会员需要做一个输出当前发布文章会员的相关内容,之前用sql或者arclist 标签是没办法实现的,因为每篇内容是不同的,这里我们来用5.5的sql语句来做个示范。

我们首先在文章模板中相应的位置加上下面的标签{dede:sql sql="SELECT * FROM dede_archives WHERE writer =~writer~"}[field:id/],{/dede:sql}这个放到article_article.htm页面,将会检索出当前会员发布的相关文章,这里的~ writer~会根据当前内容的环境变量进行替换后再执行查询。

织梦dedecms淘宝客3.1模板标签教程说明

织梦dedecms淘宝客3.1模板标签教程说明

织梦dedecms淘宝客3.1模板标签教程说明简介:[默认模板目录] \templates\default [模板文件] 1.index.htm 网站首页2.item-list.htm 商品列表页3.item-view.htm 商品内容页[模板标签] channellist 淘宝频道名称调用标签--------------------------------- 使用范围:全局功能:调用淘宝频道列表参数:默认模板目录]\templates\default[模板文件]1.index.htm 网站首页2.item-list.htm 商品列表页3.item-view.htm 商品内容页[模板标签]channellist 淘宝频道名称调用标签---------------------------------使用范围:全局功能:调用淘宝频道列表参数:cid=$cfg_nav_iterms需要调用的淘宝cid系统默认配置$cfg_nav_iterms中为50014851,50014852,50014854,50010686,50014927,5000385,可自行更改row=8显示的行数,默认为8行示例:{dede:channellist row=8}<a href="{dede:field.channelurl/}">{dede:/}</a><br />{/dede:channellist}底层字段:channelurl:频道列表name:栏目标题cid:淘宝频道ID(淘宝)parent_cid:父级频道id(淘宝)----------------------------------------------------------------------------------------------------------itemlist 淘宝商品列表调用标签------------------------------使用范围:全局功能:可以调用一个自定义排序筛选的列表参数:num_iids=特定商品id的信息cid=淘宝类目cidrow=8显示行数keyword=搜索关键词,例如:phparea=商品所在地,例如:江苏orderby=commissionRate_asc显示排序,默认排序:default price_desc(价格从高到低) price_asc(价格从低到高) credit_desc(信用等级从高到低) commissionRate_desc(佣金比率从高到底) commissionRate_asc(佣金比率从低到高) commissionNum_desc(成交量成高到低) commissionNum_asc(成交量从低到高) commissionVolume_desc(总支出佣金从高到底) commissionVolume_asc(总支出佣金从低到高) delistTime_desc(商品下架时间从高到底) delistTime_asc(商品下架时间从低到高) cres=5卖家起始信誉卖家信用: 1heart(一心) 2heart (两心) 3heart(三心) 4heart(四心) 5heart(五心) 1diamond(一钻) 2diamond(两钻) 3diamond(三钻) 4diamond(四钻) 5diamond(五钻) 1crown(一冠) 2crown(两冠) 3crown(三冠) 4crown(四冠) 5crown(五冠) 1goldencrown(一黄冠) 2goldencrown(二黄冠) 3goldencrown(三黄冠) 4goldencrown(四黄冠) 5goldencrown(五黄冠)cred=15卖家结束信用ps=商品价格区间开始pd=商品价格区间结束crs=商品佣金比率开始crd=商品佣金比率结束cns=商品推广个数开始cnd=商品推广个数结束示例:{dede:itemlist}<a href="{dede:field.arcurl/}">{dede:field.title/}</a><br />{/dede:itemlist}底层字段:arcurl(本站地址连接),其他底层字段参考:/a/api/api-getproductlist/中返回结果字段说明.如果使用num_iids属性,则其他属性无效,调用字段的底层标记参考:/a/api/api-productitemsconvert/----------------------------------------------------------------------------------------------------------datalist 列表页显示数据标签------------------------------使用范围:列表页功能:用于展示一个数据列表参数:pagesize=20数据显示条数示例:{dede:datalist pagesize=20}<p><a href="{dede:field.arcurl/}">{dede:field.title/}</a></p>{/dede:datalist}<p>{dede:pagelist/}</p>底层字段:arcurl(本站地址连接),其他底层字段参考:/a/api/api-getproductlist/中返回结果字段说明----------------------------------------------------------------------------------------------------------pagelist 列表页分页标签------------------------------使用范围:列表页功能:用于展示一个数据列表参数:无示例:{dede:datalist pagesize=20}<p><a href="{dede:field.arcurl/}">{dede:field.title/}</a></p>{/dede:datalist}<p>{dede:pagelist/}</p>底层字段:无[特殊用法]1.标签嵌套channellist和itemlist标签嵌套使用,能够生成一组商品数据示例:{dede:channellist par=cid}{dede:/}<br />{dede:itemlist}<a href="{dede:field.arcurl/}">{dede:field.title/}</a><br />{/dede:itemlist}<hr/>{/dede:channellist}这里注意嵌套属性par=cid,在子级标签中可以动态调用父级cid的元素2.内容页支持标签内容页使用/a/api/api-getitemdetail/接口获取数据,在内容页模板(item-view.htm)中直接使用{dede:var.底层变量名称/}来获取对应变量,例如获取标题,使用{dede:var.title /}即可.这里我们特殊处理了2个变量:{dede:var.shorturl /} 商品短地址URL{dede:var.shortshopurl/} 商铺短地址URL,这两个url解析后的基本地址为:http://站点名称/?ct--plus--ac--short--num_iid--*******这样的地址比淘宝推广地址/t_8?e=7HZ6*******56vKutsD4QDIR1GZtSxmOMPl5xxpQsxAFurra3Fc6g LjL5wEFvMtQzdhqws3kbOyM%2BTr7yYTiUuQ&p=mm_17444354_0_0&n=19&u=12102579de1000 7简短些.3.itemlist标签使用itemlist标签的说明除了参考手册之外,这里给出了几种特殊的itemlist标签用法:(1)调用特定产品内容{dede:itemlist num_iids='8629022725,6001334421,7801987917'}<a href="{dede:field.arcurl/}">{dede:field.title/}</a><br />{/dede:itemlist}调用num_iid为8629022725和6001334421以及780198791的商品(2)嵌套标记(见上)4.获取搜索地址如果需要获取一个检索地址,例如搜索:dedecms,可以用系统提供的GetSearchUrl()函数,例如,我们需要获取一个类目为关键词的检索信息,只需要用下面的标签:{dede:channellist}<a href="{dede: function='GetSearchUrl(@me)'/}">{dede:/}</a><br />{/dede:channellist}。

DedeCMSV5.7标签手册

DedeCMSV5.7标签手册
基本语法
{dede:booklist row='12' booktype='-1' orderby='lastpost' author='' keyword=''} <a href='[field:bookurl /]'>[field:bookname /]</a><br /> {/dede:booklist}
基本语法
{dede:group row='6' orderby='threads' titlelen='30'} <li> <span><img style="visibility: inherit;" title="[field:groupname/]" src="[field:icon/]" /></span > <span><a href="[field:url/]" title="[field:groupname/]" target="_blank">[field:groupname/]</a> </span> </li> {/dede:group}
基本语法
{dede:feedback} <ul> <li class='fbtitle'>[field:username function="(@me=='guest' ? '游客' : @me)"/] 对 [field:titl e/] 的评论:</li> <li class='fbmsg'> <a href="plus/feedback.php?aid=[field:aid/]" class='fbmsg'>[field:msg /]</a> </li> </ul> {/dede:feedback}

DedeCMS模板制作使用实例教程

DedeCMS模板制作使用实例教程

作为DedeCMS使用者,第一次写模板方面的教程,我侧重方法的介绍,下面,我以问题的形式由浅入深展开。

说得不对的地方请指出,但不要骂人,本人非计算机专业人士,写教程纯属爱好,并为DedeCMS出点力。

第一次由自己一字一句写的主页模板,终于完成了.网址如下:】/等本贴达到100回帖时将主页模板共享出来,等较空闲时,再写一篇教程,完整说明是如何制作主页模板,敬请期待!1、怎样调用数据?DedeCMS是大型的动态网站程序,其数据主要在存储在数据库中的,做模板就必须知道,数据是如何从数据库读取并展示在大家面前的。

官方写了很多程序,将数据的提取过程变得相当简单。

大家只要懂得调用适当的"DedeCMS标记"就可以调取相应的数据。

调用"DedeCMS标记"的三种代码样式:A、{dede:标记名称属性='值'/}B、{dede:标记名称属性='值'}{/dede:标记名称}C、{dede:标记名称属性='值'}自定义样式模板(InnerT ext){/dede:标记名称}详细的说明参阅官方文件:/archives/templethelp/help/index.htm。

使用时可随时查阅该文档。

我自己想出了一种方法来加深认识,并通过实例调试这些标签,这样认识就比其它人更深一层次。

具体方法是:将templets\default\文件夹下的index.html文件代码,全部掏空。

放入自己想要调试的标签,再在IE中访问网站主页index.php,就可以得到返回的数据。

比如:a、放入标签{dede:global name="cfg_webname" /}就得到了“网站名称”b、放入标签{dede:artlist typeid='' row=5}[field:title/]<br />{/dede:artlist}就返回5篇文章的标题。

Dedecms标记入门(新手必读的模板教程)

Dedecms标记入门(新手必读的模板教程)

Dedecms标记入门(新手必读的模板教程)Dedecms新版本(V5系列)模板标记非常灵活,对于很多新人是一个头疼的问题,天涯今天就来和大家谈谈这些标记,为以后大家修改、制作模板打下扎实基础。

首先我们去官方的《模板制作帮助文档》查看这些标记的简介,如何来看帮助文档呢,下面天涯就来简单的说一下,我们拿最常用的Arclist标记来做说明。

帮助文档中都有【功能说明】【适用范围】【基本语法】【属性说明】这些部分组成,【功能说明】用于解释模板标记使用功能,建议新手都把这些标记功能看看,大致做一个了解。

【适用范围】由于Dedecms模板大致分为首页、频道、列表、内容以及其他附加模板组成,使用范围指出这些标记在哪些模板中起作用。

模板文件夹中(以Dedecms默认模板为例,即{cmspath}\templets\default)大家可以仔细分析下,模版中很多都是以下列这些名字出现index.htm,index_X.htm(封面模板),list_X.htm(列表模板),article_X.htm(内容模板),你可以对照标记的适用范围,查看这些标签在哪个模板中能起到作用。

【基本语法】用于介绍模板基本使用方法,在使用时候可以拿来根据自己的需要进行响应的修改。

【属性说明】这些属性,决定你调用的内容,决定Dedecms解析这些标记的形式,属性非常重要。

以上这些介绍主要是让大多数新手学会看帮助文件,模板修改使用的大多数问题都是因为自己不去看这些帮助文件导致的,希望广大Dedecms新人引以为戒。

下面就来简单说下Dedecms模板的分类,搞过ASP的人应该知道,动态网页基本上就是对变量、数组(数据库)的操作,然后通过语句输出为HTML,dedecms的这些标记也是起到同样的效果。

下面根据起到的不同效果对模板进行如下分类:一.变量操作型这里的变量不同于对编程中那个复杂的变量,新人不懂,我这里所指出的变量是Dedecms调用局部内容进行输出的一些标记,这里有:【Flink (friendlink)标记】【Page 标记】【Pagelist 标记】【Pagebreak 标记】【Prenext 标记】【Pagetitle 标记】【Myad 标记】【Vote 标记】以及还有系统不常用的(其实天涯经常使用),例如global标记、include标记、mytag标记、position 标记,这些标记大家可以看出,都是输出来为一部分内容,并不可以重复,这个标记在解析时候生成的只是一块不重复的内容。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

首先我简单的介绍下自己,我是织梦官方团队的天涯,接触织梦也有2年多时间了,之前一直在论坛上做斑竹,认识了很多喜爱织梦的朋友,后来便加入了织梦团队,发现这是一个充满朝气、有激情和学习力的地方,这次受站长网的邀请来给大家做一次DedeCMS程序方面的讲座。

因为这次主要是讲座,缺乏体系的培训内容,本次讲座我将织梦技术论坛较为常见的问题加以整理,并结合一些其他方面的应用内容进行补充,让大家更了解DedeCMS程序的使用。

安全设置首先是程序安全问题,这里主要是一些拥有独立服务器的站长,如果自己在系统安全部署上面有些经验那应该没有什么问题,有部分站长没有系统安全部署的经验,加上现在挂马猖獗,所以许多人都在担心,官方在早些时候就发了一个关于《DedeCms V5.3/V5.5 安全设置指南》的主题帖,地址为:/172474.html,这里面说了如何在Win Serv环境配置服务器环境。

不过文中提到了织梦的文件目录,这里我对整个系统文件目录进行一个说明:/178324.html,当然,如果你安装个模块会相应的增加一些目录,例如模块group、ask等。

{dede:sql}标签的用法sql标签可以称得上是个万能标签了,查询数据库将其输出,这里介绍一些关于这个标签的用法:1.用来输出统计内容,这个是不错的,举个例子,我们来统计下总共发了多少的文章,思路就是输出dede_addonarticle这个文章附加表内容总数就可以了。

{dede:sql sql="SELECT COUNT(*) AS nums FROM dede_addonarticle"}[field:name = "nums"/]{/dede:sql}2.使用~field~来进行特殊的查询,比如之前论坛上面很多会员需要做一个输出当前发布文章会员的相关内容,之前用sql或者arclist标签是没办法实现的,因为每篇内容是不同的,这里我们来用5.5的sql语句来做个示范。

我们首先在文章模板中相应的位置加上下面的标签{dede:sql sql="SELECT * FROM dede_archives WHERE writer=~writer~"}[field:id/],{/dede:sql}这个放到article_article.htm页面,将会检索出当前会员发布的相关文章,这里的~ writer~会根据当前内容的环境变量进行替换后再执行查询。

这里出现在SQL语句中条件查询的~ writer~,也就是$refObj->Fields[$value]这个里面的相关内容模板中使用PHP许多人希望织梦的模板标签能够更加灵活,加入可以运行PHP的功能,这里在DedeCMS V5.5中就加入了一个可以执行php的特殊标签{dede:php}{/dede:php},这个标签可以执行PHP语句了。

我这里举几个常用的例子:1.最简单的输出内容:{dede:php}$numA = 1;$numB = 2;echo $numA + $numB;{/dede:php}这个输出的内容是计算结果:32.结合SQL查询输出单条内容{dede:php}$row = $dsql->GetOne('select id,typename from dede_arctype where id=2');print_r($row);{/dede:php}这个输出的内容是Array([id] => 2[typename] => 问答)3.获取当前页面的变量比如我们这里进入系统后台的[模板]-[全局标记测试],我们在代码中填入下面的内容:{dede:php}print_r($refObj->Fields);{/dede:php}如果环境变量保持默认,即“不使用环境ID”,我们会看到以下的结果:Array([typeid] => 0[phpurl] => /plus[indexurl] => /[templeturl] => /templets[memberurl] => /member[specurl] => /special[indexname] => 主页[templetdef] => /templets/default)那我们再换个环境变量测试看看,这里以我本地的栏目为测试了:Array([id] => 3[reid] => 0[topid] => 0[sortrank] => 1[typename] => 产品[typedir] => {cmspath}/product… …[indexname] => 主页[templetdef] => /templets/default[position] => 主页> 产品>[title] => 产品)这样一来就检索出当前页面的局部变量了,接下来我们可以来结合前面的SQL语句来实现根据不同环境ID调用内容不同栏目内容。

例如:{dede:php}$thisid = $refObj->Fields['id'];$row = $dsql->GetOne('select id,typename from dede_arctype where id='.$thisid);print_r($row);{/dede:php}这样是来调用当前栏目的标题,这个标签功能类似于{dede:field.typename/}写自己的标签,让别人说去吧DedeCMS从V5.3开始就支持自己扩展标签,不过许多新人很少用那个东西,今天我就来简单的介绍下如何编写自己的调用标签。

我们需要知道下扩展标签的存放目录及文件名构成,首先,扩展的标签都是存放在/include/taglib这个目录,名称都是以“标签名.lib.php”格式,例如{dede:channel/}标签对应的是channel.lib.php文件。

我们可以看一个示例标签:demotag.lib.phpif(!defined('DEDEINC')){exit("Request Error!");}function lib_demotag(&$ctag,&$refObj){global $dsql,$envs;//属性处理$attlist="row|12,titlelen|24";FillAttsDefault($ctag->CAttribute->Items,$attlist);extract($ctag->CAttribute->Items, EXTR_SKIP);$revalue = '';//你需编写的代码,不能用echo之类语法,把最终返回值传给$revalue//------------------------------------------------------$revalue = 'Hello Word!';//------------------------------------------------------return $revalue;}?>我们登录系统后台的[模板]-[全局标签测试]中运行{dede:demotag/},显示如下的结果:这里我们知道,其实标签生成的内容其实是这个函数的一个返回值,这里返回的内容都是字符串,也就是函数return $revalue;中的$revalue需要是经过处理后生成的字符串。

$attlist="row|12,titlelen|24";这个是属性列表,这个经过函数处理后会直接生成变量并复制,我们可以测试下,做如下的修改:$revalue = 'Hello Word!';$revalue .="Row:".$row.";TitleLen:".$titlelen;这样我们可以看到,这个属性已经被创建变量并且赋值了。

接下来我们可以再进一步去修改这个标签。

比如说我们需要写一个标签专门来查询文章内容页的那个相关文章,功能类似于上面sql标签中的那个sql,只是这里我们将其分装为一个标签。

我们可以新建一个标签,例如叫writerarc,那我们就需要创建一个writerarc.lib.php,然后模仿demotag 编写函数,注意需要修改为function lib_writerarc(&$ctag,&$refObj)接下来我们就可以编写查询语句及对底层模板处理的相关函数了$revalue = '';$innertext = $ctag->GetInnerText();$ctp = new DedeTagParse();$ctp->SetNameSpace('field', '[', ']');$sql = "SELECT * FROM dede_archives WHERE writer='{$refObj->Fields['writer']}' limit 0, $row";$innertext这个是用来获取标签的底层模板的,$ctp创建用于处理底层模板中的变量,并处理进行替换。

我们根据获取的属性编写我们的sql语句,这里我们使用limit 0, $row,这样就可以根据$row来确定查询的内容数目。

当然我们可以获取更多的属性以便我们这个标签更强大,例如我们可以增加类似于arclist中的相关属性,并在函数中进行处理,不过这个需要有一定的PHP基础。

接下来我们通过执行查询对sql及输出变量进行处理:$dsql->Execute('me',$sql);while($rs = $dsql->GetArray('me')){//根据属性处理查询变量$rs['title'] = cn_substr($rs['title'], $titlelen);//获取底层模板$ctp->LoadSource($innertext);foreach($ctp->CTags as $tagid=>$ctag) {if(!empty($rs[strtolower($ctag->GetName())])) {$ctp->Assign($tagid,$rs[$ctag->GetName()]);}}//根据底层模板及查询变量得到处理结果$revalue .= $ctp->GetResult();}这样我们就将查询出来的结果同底层模板中出现的相关变量进行替换,然后生成输出字符串,将所有的字符串信息存储到$revalue中。

相关文档
最新文档