dede全功能手册V5.3

时间格式

{dede:field name='pubdate' function='strftime("%Y年%m月%d日 %H:%M:%S","@me")' /}2007年1月1日 18:30:02
{dede:field name='pubdate' function='strftime("%Y-%m-%d %H:%M:%S","@me")' /}2007-1-1 18:30:02
{dede:field name='pubdate' function='strftime("%Y年%m月%d日 %H时%M分%S秒","@me")' /}2007年1月1日 18时30分02秒
{dede:field name='pubdate' function='strftime("%m-%d %H:%M:%S","@me")' /}1-1 18:30:02
{dede:field name='pubdate' function='strftime("%m-%d","@me")' /}1-1
%Y-年
%m-月
%d-日
%H-小时
%M-分
%S-秒
24小时内的时间显示红色..
[field:pubdate runphp='yes'] 
$a="<font color='#ff0000'>";
$b="</font>";
$c=strftime("%Y年%m月%d日 %H:%M:%S","@me");
$ntime = time();
$oneday = 3600 * 24;
if(($ntime - @me)<$oneday) @me = $a.$c.$b;
else @me =$c;
[/field:pubdate]
最后更新时间
最后更新时间:{dede:tagname runphp='yes'}@me = date("Y-m-d H:i:s", time());{/dede:tagname}
XX天前
[field:pubdate runphp='yes'] 
$today = Floor(time()/(3600 * 24));
$senday= Floor(@me/(3600 * 24));
$updays = $today-$senday;
if($updays==0) @me = "今日";
else @me = $updays."天前";
[/field:pubdate]

标签名称:adminname
功能说明:获得责任编辑名称
适用范围:仅内容模板 article_*.htm
基本语法
{dede:adminname /}

arclist|文档列表:

标签名称:arclist
标记简介:织梦常用标记,也称为自由列表标记,其中imglist、imginfolist、specart、coolart、autolist都是由该标记所定义的不同属性延伸出来的别名标记。
功能说明:获取指定文档列表
适用范围:全局使用
基本语法
{dede:arclist flag='h' typeid='' row='' col='' titlelen='' infolen='' imgwidth='' imgheight='' listtype='' orderby='' keyword='' limit='0,1'}
<a href='[field:arcurl/]'>[field:title/]</a>
{/dede:arclist}
参数说明
col='' 分多少列显示(默认为单列),5.3版中本属性可以通过多种方式进行多行显示
如果col='1'要多列显示的可用div+css实现
以下为通过div+css实现多列的示例:
<style type=text/css>
div{400px;float:left;}
</style>
{dede:arclist row='10' titlelen='24' orderby='pubdate' idlist='' col='2'}
•[field:textlink/]([field:pubdate function=MyDate('m-d',@me)/])<br/>
{/dede:arclist}
当col>1将使用原来的table多列方式显示
row='10' 返回文档列表总数
typeid='' 栏目ID,在列表模板和档案模板中一般不需要指定,在首页模板中允许用","分开表示多个栏目;
getall='1' 在没有指定这属性的情况下,在栏目页、文章页模板,不会获取以","分开的多个栏目的下级子类
titlelen = '30' 标题长度 等同于titlelength
infolen='160' 表示内容简介长度 等同于infolength
imgwidth='120' 缩略图宽度
imgheight='90' 缩略图高度
listtype='all' 栏目类型 image含有缩略图 commend推荐
orderby='sortrank' 文档排序方式
§ orderby='hot' 或 orderby='click' 表示按点击数排列
§ orderby='sortrank' 或 orderby='pubdate' 按出版时间排列
§ orderby='near'
§ orderby=='lastpost' 按最后评论时间
§ orderby=='scores' 按得分排序
§ orderby='id' 按文章ID排序
§ orderby='rand' 随机获得指定条件的文档列表
keyword='' 含有指定关键字的文档列表,多个关键字用","分
innertext = '' 单条记录样式
aid='' 指定文档ID
idlist ='' 提取特定文档(文档ID)
channelid 频道ID
limit='' 起始,结束 表示限定的记录范围(如:limit='1,2')
flag = 'h' 自定义属性值:头条[h]推荐[c]图片[p]幻灯[f]滚动[s]跳转[j]图文[a]加粗[b]
noflag = '' 同flag,但这里是表示不包含这些属性
orderway='desc' 值为 desc 或 asc ,指定排序方式是降序还是顺向排序,默认为降序
subday='天数' 表示在多少天以内的文档

用arclist调用于附加表字段的方法:

要获取附加表内容,必须符合两个条件
1、指定 channelid 属性
2、指定要获得的字段 addfields='字段1,字段'
如:
{dede:arclist addfields='filetype,language,softtype' row='8' channelid='3'}
[field:textlink /] - [field:softtype /]<br />
{/dede:arclist}


底层模板字段
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 = <a href='arcurl'>title</a>
typelink = <a href='typeurl'>typename</a>
imglink = <a href='arcurl'><img src='picname' border='0' width='imgwidth' height='imgheight'></a>
image = <img src='picname' border='0' width='imgwidth' height='imgheight' alt=’titile’>
字段调用方法:[field:varname/]
如:
{dede:arclist infolen='100'}
[field:textlink/]
<br>
[field:infos/]
<br>
{/dede:arclist}
注:底层模板里的Field实现也是织梦标记的一种形式,因此支持使用PHP语法,Function扩展等功能。
如: 给当天发布的内容加上 (new) 标志
[field:senddate runphp='yes'] 
$ntime = time();
$oneday = 3600 * 24;
if(($ntime - @me)<$oneday) @me = "<font color='red'>(new)</font>";
else @me = "";
[/field:senddate]

arclistsg|独立单表模型列表:

标签名称:arclistsg

功能说明:单表独立模型的文档列表调用标记

适用范围:全局使用

基本语法:

{dede:arclistsg flag='h' typeid='' row='' col='' titlelen='' orderway='' keyword='' limit='0,1'}

<a href='[field:arcurl/]'>[field:title/]</a>

{/dede:arclistsg}

参数说明:

col='' 分多少列显示(默认为单列),5.3版中本属性无效,要多列显示的可用div+css实现
row='10' 返回文档列表总数
typeid='' 栏目ID,在列表模板和档案模板中一般不需要指定,在封面模板中允许用","分开表示多个栏目;
titlelen = '30' 标题长度 等同于titlelength
orderwey='desc'或'asc' 排序方向
keyword= 含有指定关键字的文档列表,多个关键字用","分
innertext = "[field:title/]" 单条记录样式(innertext是放在标签之间的代码)
arcid='' 指定文档ID
idlist ='' 提取特定文档(文档ID)
channelid = '' 频道ID
limit='' 起始,结束 表示限定的记录范围(如:limit='1,2')
flag = 'h' 自定义属性值:头条[h]推荐[c]图片[p]幻灯[f]滚动[s]跳转[j]图文[a]加粗[b]
subday='天数' 表示在多少天以内的文档

底层模板字段:

ID(同 id),typeid, channel, arcrank, mid, click, title, senddate, flag, litpic(同picname), userip, lastpost, scores, goodpost, badpost, textlink

ask|问答标签:

标签名称:ask
功能说明:问答调用标签
适用范围:全局使用
基本语法
{dede:ask row='6' qtype='new' tid='0' titlelen='24'}
<dd>
<span class="tclass">[<a href='[field:typeurl/]'>[field:tidname/]</a>]</span>
<span class="tlink"><a href="[field:url/]">[field:title/]</a></span>
</dd>
{/dede:ask}
参数说明
row='6' 调用条数
qtype='new' 排序类型 commend 推荐、ok 表示已解决问题、high 高分问题 、new 最新问题
tid='0' 栏目id,默认是全部
titlelen='24' 标题长度
底层模板字段
tid,tidname,title,url,typeurl

autochannel|指定栏目:

标签名称:autochannel

功能说明:指定排序位置的单个栏目的链接

适用范围:全局使用

基本语法:

{dede:autochannel partsort='' typeid=’’}{/dede:autochannel}

参数说明:

partsort = '0' 栏目所在的排序位置

typeid=’0’ 获取单个栏目的顶级栏目

底层模板字段:

typename,typelink(仅表示栏目的网址)

bookcontentlist|连载内容:

标签名称:bookcontentlist

功能说明:连载图书最新内容调用

适用范围:全局使用

基本语法:

{dede:bookcontentlist row='12' booktype='-1' orderby='lastpost' author='' keyword=''}
<table width="100%" border="0" cellspacing="2" cellpadding="2">
<tr>
<td width='40%'>
[[field:cataloglink/]] [field:booklink/]</td>
<td width='40%'>[field:contentlink/]</td>
<td width='20%'>[field:lastpost function="GetDateMk(@me)"/]</td>
</tr>
</table>
{/dede:bookcontentlist}

参数说明:

这个标签和booklist实际是完全相同的,只是默认底层模板不同
row='12' 调用记录条数
booktype='-1' 图书类型,0 图书、1 漫画,默认全部
orderby='lastpost' 排序类型,当按排序类型为 commend 表示推荐图书
author='' 作者
keyword='' 关键字(用 , 分开多个关键字)

booklist|连载图书:

标签名称:booklist

功能说明:连载图书调用

适用范围:全局使用

基本语法:

{dede:booklist row='12' booktype='-1' orderby='lastpost' author='' keyword=''}
<a href='[field:bookurl /]'>[field:bookname /]</a><br />
{/dede:booklist}

参数说明:

这个标签和bookcontentlist实际是完全相同的,只是默认底层模板不同
row='12' 调用记录条数
booktype='-1' 图书类型,0 图书、1 漫画,默认全部
orderby='lastpost' 排序类型,当按排序类型为 commend 表示推荐图书
author='' 作者
keyword='' 关键字(用 , 分开多个关键字)

channel|频道标签:

标签名称:channel

标记简介:织梦常用标记,通常用于网站顶部以获取站点栏目信息,方便网站会员分类浏览整站信息

功能说明:用于获取栏目列表

适用范围:全局使用

基本语法:

{dede:channel type='top' row='8' current}

<li><a href='[field:typelink/]'>[field:typename/]</a> </li>

{/dede:channel}

参数说明:

typeid = '0' 栏目ID
reid = '0' 上级栏目ID
row = '100' 调用栏目数
col = '1' 分多少列显示(默认为单列)
type = 'son | sun' son表示下级栏目,self表示同级栏目,top顶级栏目
currentstyle = '' 应用样式

底层模板字段:

ID(同 id),typeid, typelink, typename, typeurl,typedir(仅表示栏目的网址)

例:

{dede:channel type='top'}

<a href='[field:typelink /]'>[field:typename/]</a>

{/dede:channel}

注:在没有指定typeid的情况下,type标记与模板的环境有关,如,模板生成到栏目一,那么type='son'就表示栏目一的所有子类

channelartlist|频道内容列表:

标签名称:channelartlist

标记简介:

功能说明:获取当前频道的下级栏目的内容列表标签

适用范围:全局使用

基本语法:

{dede:channelartlist row=6}

<dl>

<dt><a href='{dede:field name='typeurl'/}'>{dede:field name='typename'/}</a></dt>

<dd>

{dede:arclist titlelen='42' row='10'} <ul class='autod'>

<li><a href="[field:arcurl /]">[field:title /]</a></li>

<li>([field:pubdate function="MyDate('m-d',@me)"/])</li>

</ul>

{/dede:arclist}

</dl>

{/dede:channelartlist}

参数说明:

typeid = '0' 频道ID,多个请用","分隔

row = '20' 获取的栏目返回值

其他说明:

除了宏标记外,channelArtlist 是唯一一个可以直接嵌套其它标记的标记,不过仅限于嵌套

{dede:type}{/dede:type} 和 {dede:arclist}{/dede:arclist} 两个标记。

底层模板变量:

包含{dede:type}{/dede:type}及{dede:arclist}{/dede:arclist}下面所有底层模板变量。

feedback|会员评论内容:

标签名称:feedback

功能说明:用于调用最新评论

适用范围:全局使用

基本语法:

{dede:feedback}

<ul>

<li class='fbtitle'>[field:username function="(@me=='guest' ? '游客' : @me)"/] 对 [field:title/] 的评论:</li>

<li class='fbmsg'> <a href="plus/feedback.php?aid=[field:aid/]" class='fbmsg'>[field:msg /]</a></li>

</ul>

{/dede:feedback}

参数说明:

row='12' 调用评论条数

titlelen='24' 标题长度

infolen='100' 评论长度

field|常用变量:

标签名称:field

标记简介:织梦常用标记,通常用于栏目及内容页模板中

功能说明:用于获取特定栏目或者档案的字段值及常用的环境变量值

适用范围:全局使用

基本语法:

{dede:field name='字段名'/}

参数说明:

板块模板: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)

文档所有内容字段:

档案dede_archives表 和 附加表的所有字段。

flink|友情链接:

标签名称:flink

标记简介:

功能说明:用于获取友情链接

适用范围:全局使用

基本语法:

{dede:flink row='24'/}

参数说明:

type='image' 或textall,图片链接,text文字链接;

row='24' 链接数量

titlelen='24' 站点文字的长度

linktype='1' 链接位置(首页,内页)

typeid='0' 所有类型,可以在系统后台[模块]-[友情链接]中的“网站类型管理”中查看

group|圈子标签:

标签名称:group

功能说明:圈子调用标签

适用范围:全局使用

基本语法:

{dede:group row='6' orderby='threads' titlelen='30'}
<li>
<span><img title="[field:groupname/]" src="[field:icon/]" /></span>
<span><a href="[field:url/]" title="[field:groupname/]" target="_blank">[field:groupname/]</a></span>
</li>
{/dede:group}

参数说明:

row='6' 调用条数
orderby='threads' 排列顺序(默认是主题数)
titlelen='30' 圈子名称最大长度

groupthread|圈子主题:

标签名称:groupthread

功能说明:圈子主题调用标签

适用范围:全局使用

基本语法:

{dede:groupthread gid='0' orderby='dateline' orderway='desc' row='12' titlelen='30'}
<li>
<a href='[field:groupurl/]' target="_blank">[[field:groupname function="cn_substr(@me,10)"/]]</a>
<a href="[field:url/]" title="[field:subject/]" target="_blank">[field:subject/]</a>([field:lastpost function="GetDateMk('@me')"/])
</li>
{/dede:groupthread}

参数说明:

gid='0' 圈子id,默认为全部
orderby='dateline' 排序,默认为时间
orderway='desc' 排序方向,默认是最新主题在前
row='12' 记录数
titlelen='30' 主题标题(subject)最大长度

hotwords|热门关键词:

标签名称:hotwords

功能说明:获取网站搜索的热门关键字

适用范围:全局使用

基本语法:

{dede:hotwords /}

参数说明:

num='6' 关键词数目
subday='365' 天数
maxlength='16' 关键词最大长度

infoguide|分类信息搜索:

标签名称:infoguide

功能说明:分类信息的地区与小分类搜索

适用范围:全局使用

基本语法:

{dede:infoguide /}

likearticle|相关文档:

标签名称:likearticle

功能说明:自动关连文档标签

适用范围:全局使用

基本语法:

{dede:likearticle row='' col='' titlelen='' infolen=''}

<a href='[field:arcurl/]'>[field:title/]</a>

{/dede:likearticle}

参数说明:

col='' 分多少列显示(默认为单列)
row='10' 返回文档列表总数
titlelen = '30' 标题长度 等同于titlelength
infolen='160' 表示内容简介长度 等同于infolength
mytypeid=0 手工指定要限定的栏目id,用,分开表示多个
innertext = '' 单条记录样式(指标签中间的内容)

底层模板字段:

ID(同 id),typeid, channel, arcrank, mid, click, title, fulltitle, textlink, info, filename, typeurl, stime,senddate, litpic(同picname)

loop|万能循环:

标签名称:loop

标记简介:

功能说明:调用任意表的数据标签

适用范围:全局使用

基本语法:

{dede:loop table='dede_archives' sort='' row='4' if=''}

<a href='[field:arcurl/]'>[field:title/]</a>

{/dede:loop}

参数说明:

table = '' 查询表名

sort = '' 用于排序的字段

row = '' 返回结果的条数

if = '' 查询的条件

底层模板变量:

这个标记的底层模板变量即是被查询表的所有字段

memberlist|会员信息列表:

标签名称:memberlist

功能说明:会员信息调用标签

适用范围:全局使用

基本语法:

{dede:memberlist orderby='scores' row='20'}

<a href="../member/index.php?uid={dede:field.userid /}">{dede:field.userid /}</a>

<span>{dede:field.scores /}</span>

{/dede:memberlist}

参数说明:

row = '6' 调用数目

iscommend = '0' 是否为推荐会员

orderby = 'logintime' 按登陆时间排序 money 按金钱排序 scores 按积分排序

底层模板字段:

dede_member所有字段及spacename(空间名称)、sign(用户签名)

myad|广告标签:

标签名称:myad

功能说明:获取广告代码

适用范围:全局使用

基本语法:

{dede:myad name=''/}

参数说明:

typeid='0' 投放范围,0为全站

name='' 广告标识

注:建议在广告管理模块中获取,在此不作过多描述

mynews|站内新闻:

标签名称:mynews

标记简介:

功能说明:站内新闻调用标签

适用范围:全局使用

基本语法:

{dede:mynews row='' titlelen=''/}

参数说明:

row='1' 调用站内新闻数

titlelen='24' 新闻标题长度

底层模板变量:

[field:title/]、[field:writer/]、

[field:senddate function="strftime('%y-%m-%d %H:%M',@me)"/](时间)、[field:body/]

mytag|自定义宏标记:

标签名称:mytag

功能说明:用于获取自定义宏标记的内容

适用范围:全局使用

基本语法:

{dede:mytag typeid='0' name=''/}

参数说明:

name = ’’ 标记名称,该项是必须的属性,以下 2、3是可选属性;

ismake = ’yes|no’ 默认是 no 表示设定的纯HTML代码, yes 表示含板块标记的代码;

typeid = ‘’ 表示所属栏目的ID,默认为 0 ,表示所有栏目通用的显示内容,在列表和文档模板中,typeid默认是这个列表或文档本身的栏目ID。

sonchannel|子栏目标签:

标签名称:sonchannel

功能说明:子栏目调用标签

适用范围:全局使用

基本语法:

{dede:sonchannel}

<a href='[field:typeurl/]'>[field:typename/]</a>

{/dede:sonchannel}

参数说明:

row ='100' 返回数目
col = '1' 默认单列显示

nosonmsg = '' 没有指定ID子栏目显示的信息内容

底层模板字段:

ID(同 id),typeid, typelink, typename, typeurl,typedir(仅表示栏目的网址)

注:在没有指定typeid的情况下,type标记与模板的环境有关

sql|SQL标签:

标签名称:sql

功能说明:用于从模板中用一个SQL查询获得其返回内容

适用范围:全局使用

基本语法:

{dede:sql sql=""}底层模板{/dede:sql}

参数说明:

sql="" 完整的SQL查询语句

底层模板字段:

SQL语句中查出的所有字段都可以用[field:字段名/]来调用
应用实例:
1.调用某个特定会员发布的文章内容

{dede:sql sql='Select * from dede_archives where mid=1'}
<a href='/plus/view.php?aid=[field:id/]' target='_blank'>[field:title/]</a>
{/dede:sql}
mid为用户ID可以参考二次开发中关于dede_archives的数据表字段介绍

tag|TAG调用:

标签名称:tag

功能说明:TAG调用标签

适用范围:全局使用

基本语法:

{dede:tag sort='new' getall='0'}

<a href='[field:link/]'>[field:tag /]</a>

{/dede:tag}

参数说明:

row='30' 调用条数
sort='new' 排序方式 month,rand,week

getall='0' 获取类型 0 为当前内容页TAG标记,1为获取全部TAG标记

底层模板字段:

link,tag

type|指定栏目:

标签名称:type

功能说明:表示指定的单个栏目的链接

适用范围:全局使用

基本语法:

{dede:type}

<a href="[field:typelink /]">[field:typename /]</a>

{/dede:type}

参数说明:

typeid='' 指定栏目ID

底层模板字段:

typename,typelink(仅表示栏目的网址), 栏目表dede_arctype的所有字段

vote|投票标签:

标签名称:vote

标记简介:

功能说明:用于获取一组投票表单

适用范围:全局使用

基本语法:

{dede:vote id='' lineheight='22' tablewidth='100%' titlebgcolor='#EDEDE2' titlebackground='' tablebgcolor='#FFFFFF'/}

参数说明:

id='' 数字,当前投票ID

lineheight='24' 表格高度

tablewidth='100%' 表格宽度

titlebgcolor='#EDEDE2' 投票标题背景色

titlebackground=''

tablebg ='' 投票表格背景色

注:为了更方便修改样式,建议在后台->辅助插件->投票管理,直接复制生成的HTML代码来使用

list|列表标签:

标签名称:list

功能说明:表示列表模板里的分页内容列表

适用范围:仅列表模板 list_*.htm

基本语法:

{dede:list col='' titlelen='' infolen='' imgwidth='' imgheight='' listtype='' orderby='' pagesize='' orderway=''}{/dede:list}

参数说明:

col='' 内容列数

titlelen='' 标题长度

infolen='' 内容摘要长度

imgwidth='' 缩略图宽

imgheight='' 缩略图高

orderby='' 排序方式,有效的排序方式有 senddate、pubdate、id、click、lastpost、postnum ,默认为 sortrank

pagesize='20' 分页大小

底层模板字段:

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"格式)

注:list标记除了支持档案表的基本模板变量外,还支持附加表的字段,你可以在模型管理中知道附加表支持列表使用的字段有哪些。

pagelist|列表分页:

标签名称:pagelist

功能说明:表示分页页码列表

适用范围:仅列表模板 list_*.htm

基本语法:

{dede:pagelist listsize='5' listitem=''/}

参数说明:

listsize 表示 [1][2][3] 这些项的长度 x 2

listitem 表示页码样式,可以把下面的值叠加

index  首页

pre 上一页

pageno 页码

next 下一页

end 末页

option 下拉跳转框

例:{dede:pagelist listitem="info,index,end,pre,next,pageno" listsize="5"/}

fieldlist|变量列表:

标签名称:fieldlist

功能说明:表示获取文档的分页标题memberinfos|用户信息:

标签名称:memberinfos

功能说明:文档关连的用户信息

适用范围:仅内容模板 article_*.htm

基本语法:

{dede:memberinfos mid = '' /}

参数说明:

mid = '' 用户ID

底层模板字段:

dede_member所有字段及spacename(空间名称)、sign(用户签名)

 

适用范围:仅内容模板 article_*.htm

基本语法:

{dede:fieldlist}

[field:name/] : [field:value/] <br>

{/dede:fieldlist}

pagebreak|内容分页:

标签名称:pagebreak

功能说明:表示文档的分页链接列表

适用范围:仅内容模板 article_*.htm

基本语法:

{dede:pagebreak/}

pagetitle|分页标题:

标签名称:pagetitle

功能说明:表示获取文档的分页标题

适用范围:仅内容模板 article_*.htm

基本语法:

{dede:pagetitle style='select'/}

参数说明:

style='' 表示分页标题的展示样式

select 表示下拉框、link 表示文字直接链接

pagenext|上下篇标签:

标签名称:pagenext

功能说明:表示获取文档“上一篇/下一篇”的链接列表

适用范围:仅内容模板 article_*.htm

基本语法:

{dede:prenext/}

参数说明:

get 获取连接类型(5.x以后版本),get='' 同V4显示横排的上下页连接, get='pre' 上一篇的连接 get='next' 下一篇连接

注:此标记默认为横向排列,如果你想用竖向排列,可以用

{dede:prenext function="str_replace(' 下一篇:','<'.'br'.' />下一篇:',@me)"/}

表示

softmsg|下载说明:

标签名称:softmsg

功能说明:下载说明标签

适用范围:软件内容模板article_soft.htm

基本语法:

{dede:softmsg /}

likesgpage & likepage|单页文档调用:

标签名称:likesgpage| likepage

功能说明:单页文档调用标签

适用范围:单页文档模板,系统默认为singlepage.htm

基本语法:

{dede:likespage row=''/}

参数说明:

row = '8' 调用条数

底层模板字段:

aid,title,url

全局函数:

1、common.func.php 公用函数



获得当前的脚本网址
function GetCurUrl()

返回格林威治标准时间
function MyDate($format='Y-m-d H:i:s',$timest=0)

把全角数字转为半角
function GetAlabNum($fnum)

把含HTML的内容转为纯text
function Html2Text($str,$r=0)

把文本转HTML
function Text2Html($txt)

输出Ajax头
function AjaxHead()

中文截取2,单字节截取模式
function cn_substr($str,$slen,$startdd=0)

把标准时间转为Unix时间戳
function GetMkTime($dtime)

获得一个 0000-00-00 00:00:00 标准格式的时间
function GetDateTimeMk($mktime)

获得一个 0000-00-00 标准格式的日期
function GetDateMk($mktime)

获得用户IP
function GetIP()

获取拼音以gbk编码为准
function GetPinyin($str,$ishead=0,$isclose=1)

dedecms通用消息提示框
function ShowMsg($msg,$gourl,$onlymsg=0,$limittime=0)

保存一个cookie
function PutCookie($key,$value,$kptime=0,$pa="/")

删除一个cookie
function DropCookie($key)

获取cookie
function GetCookie($key)

获取验证码
function GetCkVdValue()

过滤前台用户输入的文本内容
// $rptype = 0 表示仅替换 html标记
// $rptype = 1 表示替换 html标记同时去除连续空白字符
// $rptype = 2 表示替换 html标记同时去除所有空白字符
// $rptype = -1 表示仅替换 html危险的标记
function HtmlReplace($str,$rptype=0)

获得某文档的所有tag
function GetTags($aid)

过滤用于搜索的字符串
function FilterSearch($keyword)

处理禁用HTML但允许换行的内容
function TrimMsg($msg)

获取单篇文档信息
function GetOneArchive($aid)

数据库类:

系统会自动载入 dedesql.class.php 文件,并用
$dsql = $db = new DedeSql(false);
进行初始化数据库连接,因此在工程所有文件中均不需要单独初始化这个类,可直接用 $dsql 或 $db 进行操作,为了防止错误,操作完后不必关闭数据库。

常用的方法:
1、执行一个非查询类型的SQL语句,如 insert 、create 、update 等
$rs = $db->ExecuteNoneQuery($sql);
返回值为是否执行成功。

2、执行一个非查询类型的SQL语句,并返回成功记录数
$rs = $db->ExecuteNoneQuery2($sql);

与上面相比,它返回的是影响的记录数,而不是布尔值

3、返回单个记录
$arr = $db->GetOne($sql);

$dsql 如果不带 limit ,系统会自动加上 limit 0,1

4、执行条件查询语句
$db->SetQuery($dsql);
$db->Execute();
while($arr = $db->GetArray())
{
}
可以简化为:
$db->Execute('me',$dsql);
while($arr = $db->GetArray())
{
}

'me' 为记录集游标,用于区分不同的查询,如:

$db->Execute('me',$dsql);
while($arr = $db->GetArray())
{
$db->Execute('2',$dsql2);
while($arr2 = $db->GetArray())
{

}
}
像这种情况必须指定一个值区分默认的'me'参数,否则会出错

$db->GetArray($rsid,$acctype) 参数
$rsid="me"
$acctype=MYSQL_ASSOC

在查询游标中读取数据还可以用
$db->GetObject($rsid="me");

返回的结果是用类结构表示的值。

5、获取上一个插入的自动递增主键id值
$db->GetLastID();

6、获得查询的总记录数
$db->GetTotalRow($rsid="me")

7、获得MySql的版本号
$db->GetVersion($isformat=true)
默认的情况下会转换成 x.xx 形式浮点数

8、析放某查询的资源

$db->FreeResult($rsid="me");

9、在数据库中是否存在某数据表
$db->IsTable($tbname)

10、重新选择要操作的数据库
$db->SelectDB($dbname);

11、获得数据库连接标识
$db->linkID
获得这个连接标识后,可以直接用mysql相关函数进行数据库操作
在非不得已的情况,项目中一般不使用这个变量。





动态分页类:


类文件
include/datalistcp.class.php

适用范围:数据量不大的数据分页

使用方法:
$dl = new DataListCP();
$dl->pageSize = 25; //设定每页显示记录数(默认25条)
$dl->SetParameter($key,$value); //设定get字符串的变量

//这两句的顺序不能更换
$dl->SetTemplate($tplfile); //载入模板
$dl->SetSource($sql); //设定查询SQL

$dl->Display(); //显示

模板

{dede:datalist}
<li>{field.fieldname1/} - {field.fieldname2/} ...</li>
{/dede:datalist}

{tag:pagelist listitem="info,index,end,pre,next,pageno" listsize="5"/}

listitem、listsize 是可选属性

如果需要自定义 datalist 相关属性,可以继续本类来创建一个新类,只需改变 GetArcList($atts,$refObj='',$fields=array()) 方法即可。

静态模板类:

类文件
include/dedetag.class.php

这个文件是dedecms V5.3及之前版本使用的主要的模板类,它是解析式模板类,并非编译式的(区别是前者通过获得标签位置进行内容替换,后者是直接解析式PHP代码,二次执行)

一、模板语法
织梦模板引擎是一种使用XML名字空间形式的模板解析器,使用织梦解析器解析模板的最大好处是可以轻松的制定标记的属性,感觉上就像在用HTML一样,使模板代码十分直观灵活,新版的织梦模板引擎不单能实现模板的解析还能分析模板里错误的标记。

1、织梦模板引擎的代码样式有如下几种形式:
{dede:标记名称 属性='值'/}
{dede:标记名称 属性='值'}{/dede:标记名称}
{dede:标记名称 属性='值'}自定义样式模板(InnerText){/dede:标记名称}

提示:
如果使用带底层模板的标记,必须严格用{dede:标记名称 属性='值'}{/dede:标记名称} 这种格式,否则会报错。

2、织梦模板引擎内置有多个系统标记,这些系统标记在任何场合都是能直接使用的。

(1) global 标记,表示获取一个外部变量,除了数据库密码之外,能调用系统的任何配置参数,形式为:
{dede:global name='变量名称'}{/dede:global}

{dede:global name='变量名称'/}

其中变量名称不能加 $ 符号,如变量 $cfg_cmspath ,应该写成 {dede:global name='cfg_cmspath'/} 。

(2) foreach 用来输出一个数组,形式为:
{dede:foreach array='数组名称'}[field:key/] [field:value/]{/dede:foreach}

(3) include 引入一个文件,形式为:
{dede:include file='文件名称' ismake='是否为dede板块模板(yes/no)'/}
对文件的搜索路径为顺序为:绝对路径、include文件夹,CMS安装目录,CMS主模板目录

3、织梦标记允许在任何标记中使用函数对得到的值进行处理,形式为:
{dede:标记名称 属性='值' function='youfunction("参数一","参数二","@me")'/}
其中 @me 用于表示当前标记的值,其它参数由你的函数决定是否存在,例如:
{dede:field name='pubdate' function='strftime("%Y-%m-%d %H:%M:%S","@me")'/}

4、织梦标记允许有限的编程扩展。
格式为:
{dede:tagname runphp='yes'}
$aaa = @me;
@me = "123456";
{/dede:tagname} 
@me 表示这个标记本身的值,因此标记内编程是不能使用echo之类的语句的,只能把所有返回值传递给@me。
此外由于程序代码占用了底层模板InnerText的内容,因此需编程的标记只能使用默认的InnerText。

二、解析方式

在 dedetag.class.php 里面有四个类

class DedeAttribute 属性结构表述

class DedeAttributeParse 属性解析器

class DedeTag 标签结构表述

class DedeTagParse 标签解析器

使用解析类解析模板时一般经过下面的步骤

1、初始化:

$dtp = new DedeTagParse();

2、载入模板/模板字符串:

$dtp->LoadTemplate(模板文件(绝对路径)); //会生成缓存,第二次不需解析模板

$dtp->LoadSource(字符串);

3、给标签赋值

foreach($dtp->CTags as $tid=>$ctag) {
//判断ctag的名称和属性,并给赋不同的值,通常用函数处理

if($ctag->GetName=='mytag') $dtp->Assign($tid, mytagvalue($ctag) );

}

在上面例子中,直接把名称为 mytag的标签转交给 mytagvalue 函数处理,mytagvalue 里判断$ctag的各个属性,返回不同内容即可。

在 V5.3版本中,通常除了field、list等专用标签之外,凡arc.*开头的类解析的文件,标签都是对应该 include/taglib 的源码的,这个由系统进行了自动的映射。

4、显示或保存为HTML

$dtp->display();

$dtp->SaveTo(静态文件名);

对于二次开发人员而言,不大需要知道dedecms模板具体解析方式,不过应该十分清楚CTag这个类的结构,从而判断标签不同属性进行处理。

class DedeTag
{
var $IsReplace=FALSE; //标记是否已被替代,供解析器使用
var $TagName=""; //标记名称
var $InnerText=""; //标记之间的文本
var $StartPos=0; //标记起始位置
var $EndPos=0; //标记结束位置
var $CAttribute=""; //标记属性描述,即是class DedeAttribute
var $TagValue=""; //标记的值
var $TagID = 0;

//获取标记的名称和值
function GetName()
{
return strtolower($this->TagName);
}

function GetValue()
{
return $this->TagValue;
}

//下面两个成员函数仅是为了兼容旧版
function GetTagName()
{
return strtolower($this->TagName);
}

function GetTagValue()
{
return $this->TagValue;
}

//获取标记的指定属性
function IsAttribute($str)
{
return $this->CAttribute->IsAttribute($str);
}

function GetAttribute($str)
{
return $this->CAttribute->GetAtt($str);
}

function GetAtt($str)
{
return $this->CAttribute->GetAtt($str);
}

function GetInnerText()
{
return $this->InnerText;
}
}

动态模板类:


核心类文件
include/dedetemplate.class.php
用途:用于非核心模块的动态页面或列表页的模板解析,如:member/content_list.php ,通常是在 datalistcp.class.php 中使用,这个类在动态运行的情况下,由于本身是把模板编译成PHP的,因此性能上会优级于旧的解析类,这个方法将在未来版本中作为通用的方式。

一、使用方法:

$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(物理绝对路径的文件名);


二、模板标记语法

1、标记通用特性
(1) 短标记
{dede:tagname.name/}
等同于
{dede:tagname name='' /}
(2) 块标记
{dede:tagname}
循环代码
{/dede:tagname}


2、标记的具体语法及对应的PHP代码
(1) 配置变量
{dede:config name='' value=''/}
配置变量可以在载入模板后通过 $tpl->GetConfig($name) 获得,仅作为配置,不在模板中显示。

(2) 短标记 

{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 数组,否则模板引擎无法获得它的值从而导致产生错误。

(3) 自由调用块标记
{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) 统一管理,这个函数存放在 cls_dede_tplinc.php 。

(4) 固定块标记

[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'/}

(5) include 语法
{dede:include file=''/}
{dede:include filename=''/}

(6) php 代码块
{dede:php
php 代码
/}

{dede:php}
php代码
{/dede:php}

(7) 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}

(8) 遍历一个 array 数组

{dede:array.name}
{dede:key/} = {dede:value/}
{/dede:array}

各种语法的具体编译后的代码,可查看 dede-template-class.php 的 function CompilerOneTag(&$cTag)。

块调用示例代码:
1、示例一
{tag:datalist timeformat=""}
<tr>
<td class='col1'>
<div>?<a href='{tag:field.arcurl/}'>{tag:field.title/}</a></div>
<!--div class='descriptions'>&nbsp;&nbsp;&nbsp;&nbsp;{tag:field.description function="CnSubstr(@me,150)"/}...</div-->
</td>
<td class='col2'>{tag:field.formattime/}</td>
</tr>
{/tag:datalist}
编译后的代码
<?php
$atts = array();
$atts['tagname'] = 'datalist';
$atts['timeformat'] = '';
$blockValue = $this->refObj->GetArcList($atts,$this->refObj,$fields); 
foreach( $blockValue as $key=>$fields )
{
?>
<tr>
<td class='col1'>
<div>?<a href='<?php echo $fields['arcurl']; ?>'><?php echo $fields['title']; ?></a></div>
<!--div class='descriptions'>&nbsp;&nbsp;&nbsp;&nbsp;<?php echo CnSubstr($fields['description'],150); ?>...</div-->
</td>
<td class='col2'><?php echo $fields['formattime']; ?></td>
</tr>
<?php
}
?>
2、示例二
{tag:article sort='new' titlelen='36' row='10'}
<dd>[{tag:field.typename/}]<a href="{tag:field.arcurl/}">{tag:field.title function="CnSubstr(@me,24)"/}</a></dd>
{/tag:article}

编译后的代码

<?php
$atts = array();
$atts['tagname'] = 'article';
$atts['sort'] = 'new';
$atts['titlelen'] = '36';
$atts['row'] = '10';
$blockValue = MakePublicTag($atts,$this->refObj,$fields); 
if(is_array($blockValue) && count($blockValue) > 0){
foreach( $blockValue as $key=>$fields )
{
?>
<dd>[<?php echo $fields['typename']; ?>]<a href="<?php echo $fields['arcurl']; ?>"><?php echo CnSubstr($fields['title'],24); ?></a></dd>
<?php
}
}
?>

原文地址:https://www.cnblogs.com/lovecnblogs/p/4583624.html