dedecms模板开发Word文件下载.docx
《dedecms模板开发Word文件下载.docx》由会员分享,可在线阅读,更多相关《dedecms模板开发Word文件下载.docx(11页珍藏版)》请在冰点文库上搜索。
四、二次开发
DedeCms主要的模板解析类是include/inc_arcpart_view.php、include/inc_arclist_view.php、include/inc_archives_view.php,这些类是与pub_dedetag.PHP一起工作的,如果你想为文档模板、列表模板、板块模板增加一些功能,可以直接修改这几个类的ParseTemplet()或ParseTempletsFirst()这类的方法,把标记名称,属性对应试相应该的功能函数即时。
织梦模板标记简介
在了解DedeCms的模板代码之前,了解一下织梦模板引擎的知识是非常有意义的。
织梦模板引擎是一种使用XML名字空间形式的模板解析器,使用织梦解析器解析模板的最大好处是可以轻松的制定标记的属性,感觉上就像在用HTML一样,使模板代码十分直观灵活,新版的织梦模板引擎不单能实现模板的解析还能分析模板里错误的标记。
1、织梦模板引擎的代码样式有如下几种形式:
{dede:
标记名称属性='
值'
/}
}{/dede:
标记名称}
}自定义样式模板(InnerText){/dede:
提示:
如果使用带底层模板的标记,必须严格用{dede:
标记名称}这种格式,否则会报错。
2、织梦模板引擎内置有多个系统标记,这些系统标记在任何场合都是能直接使用的。
(1)global标记,表示获取一个外部变量,除了数据库密码之外,能调用系统的任何配置参数,形式为:
{dede:
globalname='
变量名称'
global} 或 {dede:
/}。
其中变量名称不能加$符号,如变量$cfg_cmspath,应该写成{dede:
cfg_cmspath'
/}。
(2)foreach用来输出一个数组,形式为:
foreacharray='
数组名称'
}[field:
key/][field:
value/]{/dede:
foreach}
(3)include引入一个文件,形式为:
includefile='
文件名称'
ismake='
是否为dede板块模板(yes/no)'
/},对文件的搜索路径为顺序为:
绝对路径、include文件夹,CMS安装目录,CMS主模板目录。
3、织梦标记允许在任何标记中使用函数对得到的值进行处理,形式为:
function='
youfunction("
参数一"
"
参数二"
@me"
)'
其中@me用于表示当前标记的值,其它参数由你的函数决定是否存在,例如:
fieldname='
pubdate'
strftime("
%Y-%m-%d%H:
%M:
%S"
4、织梦标记允许有限的编程扩展。
格式为:
tagnamerunPHP='
yes'
}
$aaa=@me;
@me="
123456"
;
{/dede:
tagname}
@me表示这个标记本身的值,因此标记内编程是不能使用echo之类的语句的,只能把所有返回值传递给@me。
此外由于程序代码占用了底层模板InnerText的内容,因此需编程的标记只能使用默认的InnerText。
织梦内容管理系统模板标签代码参考
【Arclist标记】
这个标记是DedeCms最常用的一个标记,也叫自由列表标记,其中hotart、coolart、likeart、artlist、imglist、imginfolist、specart、autolist这些标记都是由这个标记所定义的不同属性延伸出来的别名标记。
功能说明:
获取指定的文档列表适用范围:
封面模板、列表模板、文档模板。
基本语法:
arclisttypeid='
'
row='
col='
titlelen='
infolen='
imgwidth='
imgheight='
listtype='
orderby='
keyword='
底层模板(InnerText){/dede:
arclist}
属性说明:
[1]typeid='
表示栏目ID,在列表模板和档案模板中一般不需要指定,在封面模板中允许用"
分开表示多个栏目;
[2]row='
表示返回文档列表总数;
[3]col='
表示分多少列显示(默认为单列);
[4]titlelen='
表示标题长度;
[5]infolen='
表示内容简介长度;
[6]imgwidth='
表示缩略图宽度;
[7]imgheight='
表示缩略图高度;
[8]type='
表示档案类型,其中空值、不使用这个属性或type='
all'
时为普通文档
§
type='
commend'
时,表示推荐文档,等同于{dede:
coolart}{/dede:
coolart}
image'
时,表示必须含有缩略图片的文档,等同于{dede:
imglist}{/dede:
imglist}、{dede:
imginfolist}{/dede:
imginfolist}
spec'
时,表示专题,等同于标记{dede:
specart}{/dede:
specart}
以上属性值可以联合使用,如:
commendimage'
表示推荐的图片文档
[9]orderby='
表示排序方式,默认值是senddate按发布时间排列。
hot'
或orderby='
click'
表示按点击数排列
按出版时间排列(即是前台允许更改的时间值)
sortrank'
按文章的新排序级别排序(如果你想使用置顶文章则使用这个属性)
id'
按文章ID排序
postnum'
按文章评论次数排序
rank'
随机获得指定条件的文档列表
[10]orderway='
值为desc或asc,指定排序方式是降序还是顺向排序,默认为降序。
[11]keyword='
表示含有指定关键字的文档列表,多个关键字用"
分开
[12]channelid='
表示特定的频道模型ID,内置的频道:
专题(-1)、文章
(1)、图集
(2)、Flash(4)、软件(3)
[13]limit='
起始,结束'
表示限定的记录范围,row属性必须等于"
结束-起始"
,MySQL的limit语句是由0起始的,如“limit0,5”表示的是取前五笔记录,“limit5,5”表示由第五笔记录起,取下五笔记录,使用了本属性后,row属性将无效。
[14]att='
数值'
表示自定义属性值
[15]subday='
天数'
表示在多少天以内的文档,通常用于获取指定天数的热门文档、推荐文档、热门评论文档等
[16]partsort='
排列位数'
表示自动获得父栏目的所有子数中排列在第几位的栏目ID,标记为{dede:
autolist}{/dede:
autolist}时,使用本属性才有效。
底层模板字段:
ID(同id),title,iscommend,color,typeid,ismake,description(同info),writer,shorttitle,memberid
pubdate,senddate,arcrank,click,litpic(同picname),typedir,typename,
arcurl(同filename),typeurl,stime(pubdate的"
0000-00-00"
格式),
textlink,typelink,imglink,image
其中:
textlink=<
ahref='
arcurl'
>
title<
/a>
typelink=<
typeurl'
typename<
imglink=<
<
imgsrc='
picname'
border='
0'
width='
imgwidth'
height='
imgheight'
image=<
字段调用方法:
[field:
varname/]
如:
arclistinfolen='
100'
[field:
textlink/]
<
br>
info/]
注:
底层模板里的Field实现也是织梦标记的一种形式,因此支持使用PHP语法,Function扩展等功能
给当天发布的内容加上(new)标志
senddaterunPHP='
]
$ntime=time();
$oneday=3600*24;
if(($ntime-@me)<
$oneday)@me="
fontcolor='
red'
(new)<
/font>
"
else@me="
[/field:
senddate]
【Field标记】
用于获取特定栏目或档桉的字段值及常用的环境变量值
适用范围:
封面模板、列表模板、文档模板
(1)基本语法
字段名'
(2)系统分配的field
板块模板:
PHPurl,indexurl,indexname,templeturl,memberurl,powerby,webname,specurl
列表模板:
position,title,PHPurl,templeturl,memberurl,powerby,indexurl,indexname,specurl,栏目表dede_arctype的所有字段
其中position为“栏目一>
栏目二”这样形式的链接,title则为这种形式的标题
文档模板:
position,PHPurl,templeturl,memberurl,powerby,indexurl,indexname,specurl,id(同ID,aid)
(3)文档所有内容字段
档案dede_archives表和附加表的所有字段。
【Channel标记】
用于获取栏目列表
封面模板、列表模板、文档模板
channelrow='
自定义样式模板(InnerText)
channel}
(2)属性
[1]row='
数字'
表示获取记录的条数(通用在某级栏目太多的时候使用,默认是8)
[2]type=top,sun/son,self
type='
top'
表示顶级栏目
son'
或'
sun'
表示下级栏目
self'
表示同级栏目
其中后两个属性必须在列表模板中使用。
(3)底层模板变量
ID,typename,typedir,typelink(仅表示栏目的网址)
channeltype='
typelink/]'
typename/]<
在没有指定typeid的情况下,type标记与模板的环境有关,如,模板生成到栏目一,那么type='
就表示栏目一的所有子类
【Type标记】别名onetype
表示指定的单个栏目的链接
(1)语法{dede:
typetypeid='
type}
(2)属性typeid='
栏目ID'
typename,typelink(仅表示栏目的网址)
【Autochannel标记】
表示指定排序位置的单个栏目的链接
autochannelpartsort='
autochannel}
(2)属性partsort='
栏目所在的排序位置'
【Mytag标记】
用于获取自定义宏标记的内容
(1)基本语法
mytagtypeid='
name='
/}
[1]typeid='
表示栏目ID,默认为0,在没有设定的栏目没有定义这个名称的标记,会按如下搜索方式来搜索“先向上查找父栏目->
通用标记(typeid=0)的同名标记”。
[2]name='
标记名称。
[3]ismake=yes|no默认为no表示mytag里的内容不包含其它封面模板的标记,yes则表示标记内容含有其它封面模板标记。
【Vote标记】
用于获取一组投票表单
封面模板
(1)基本语法
voteid='
投票ID'
lineheight='
22'
tablewidth='
100%'
titlebgcolor='
#EDEDE2'
titlebackground='
tablebgcolor='
#FFFFFF'
vote}
本标记直接生成投票的HTML表单,为了让你更方便修改其样式,建议在后台->
投票管理的地方直接复制生成的HTML代码来使用。
【Flink标记】,等同friendlink
用于获取友情链接
flinktype='
tablestyle='
flink}
(2)属性
[1]type:
链接类型,值:
a.textall全部用文字显示
b.textimage文字和图得混合排列
c.text仅显示不带Logo的链接
d.image仅显示带Logo的链接
-------------------------------------
[2]row:
显示多少行,默认为4行
[3]col:
显示多少列,默认为6列
[4]titlelen:
站点文字的长度
[5]tablestyle:
表示<
table这里的内容>
【Mynews标记】
用于获取站内新闻
(1)基本语法
mynewsrow='
条数'
标题长度'
}Innertext{/dede:
mynews}
[1]row新闻条数
[2]titlelen标题长度
(3)底层模板变量
title/]、[field:
writer/]、
senddatefunction="
strftime('
%y-%m-%d%H:
%M'
@me)"
/](时间)、[field:
body/]
【LOOP标记】
用于调用任意表的数据,一般用于调用论坛贴子之类的操作
所有模板
looptable='
sort='
if='
}
底层模板
loop}
(2)属性
[1]table表示查询的数据表
[2]sort用于排序的字段
[3]row返回结果的条数
[4]if查询条件
这个标记的底层模板变量即是被查询表的所有字段
获取DZ论坛的最新主题贴子:
amp;
nbsp;
&
loop&
table='
pw_threads'
sort='
tid'
row='
8'
if='
}&
lt;
br&
gt;
&
a&
href=&
quot;
/bbs/read.PHP?
tid=[field:
tid/]&
middot;
subject&
function=&
cn_substr('
@me'
30)&
/]&
([field:
lastpost&
date('
m-d&
H:
M'
'
)&
/])&
/a&
br/&
loop}
【Channelartlist标记】
用于获取当前频道的下级栏目的内容列表
封面模板
channelArtlisttypeid=0col=2tablewidth='
tablewidth="
99%"
border="
0"
cellpadding="
3"
cellspacing="
1"
bgcolor="
#BFCFA9"
tr>
tdbgcolor="
#E6F2CC"
tableborder="
width="
98%"
tdwidth='
10%'
align="
center"
cfg_p