织梦函数大全集合Word文件下载.docx

上传人:b****4 文档编号:17863246 上传时间:2022-12-11 格式:DOCX 页数:14 大小:21.28KB
下载 相关 举报
织梦函数大全集合Word文件下载.docx_第1页
第1页 / 共14页
织梦函数大全集合Word文件下载.docx_第2页
第2页 / 共14页
织梦函数大全集合Word文件下载.docx_第3页
第3页 / 共14页
织梦函数大全集合Word文件下载.docx_第4页
第4页 / 共14页
织梦函数大全集合Word文件下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

织梦函数大全集合Word文件下载.docx

《织梦函数大全集合Word文件下载.docx》由会员分享,可在线阅读,更多相关《织梦函数大全集合Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。

织梦函数大全集合Word文件下载.docx

//$rptype=-1表示仅替换html危险的标记

functionHtmlReplace($str,$rptype=0)

获得某文档的所有tag

functionGetTags($aid)

过滤用于搜索的字符串

functionFilterSearch($keyword)

处理禁用HTML但允许换行的内容

functionTrimMsg($msg)

获取单篇文档信息

functionGetOneArchive($aid)

数据库类:

系统会自动载入dedesql.class.php文件,并用

$dsql=$db=newDedeSql(false);

进行初始化数据库连接,因此在工程所有文件中均不需要单独初始化这个类,可直接用$dsql或$db进行操作,为了防止错误,操作完后不必关闭数据库。

常用的方法:

1、执行一个非查询类型的SQL语句,如insert、create、update等

$rs=$db->

ExecuteNoneQuery($sql);

返回值为是否执行成功。

2、执行一个非查询类型的SQL语句,并返回成功记录数

ExecuteNoneQuery2($sql);

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

3、返回单个记录

$arr=$db->

GetOne($sql);

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

4、执行条件查询语句

$db->

SetQuery($dsql);

Execute();

while($arr=$db->

GetArray())

{

}

可以简化为:

Execute('

me'

$dsql);

'

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

$db->

2'

$dsql2);

while($arr2=$db->

{

}

像这种情况必须指定一个值区分默认的'

参数,否则会出错

GetArray($rsid,$acctype)参数

$rsid="

me"

$acctype=MYSQL_ASSOC

在查询游标中读取数据还可以用

GetObject($rsid="

);

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

5、获取上一个插入的自动递增主键id值

GetLastID();

6、获得查询的总记录数

GetTotalRow($rsid="

7、获得MySql的版本号

GetVersion($isformat=true)

默认的情况下会转换成x.xx形式浮点数

8、析放某查询的资源

FreeResult($rsid="

9、在数据库中是否存在某数据表

IsTable($tbname)

10、重新选择要操作的数据库

SelectDB($dbname);

11、获得数据库连接标识

linkID

获得这个连接标识后,可以直接用mysql相关函数进行数据库操作

在非不得已的情况,项目中一般不使用这个变量。

动态分页类:

类文件

include/datalistcp.class.php

适用范围:

数据量不大的数据分页

使用方法:

$dl=newDataListCP();

$dl->

pageSize=25;

//设定每页显示记录数(默认25条)

SetParameter($key,$value);

//设定get字符串的变量

//这两句的顺序不能更换

SetTemplate($tplfile);

//载入模板

SetSource($sql);

//设定查询SQL

Display();

//显示

模板

{dede:

datalist}

<

li>

{field.fieldname1/}-{field.fieldname2/}...<

/li>

{/dede:

{tag:

pagelistlistitem="

info,index,end,pre,next,pageno"

listsize="

5"

/}

listitem、listsize是可选属性

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

$fields=array())方法即可。

静态模板类:

include/dedetag.class.php

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

一、模板语法

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

1、织梦模板引擎的代码样式有如下几种形式:

标记名称属性='

值'

}{/dede:

标记名称}

}自定义样式模板(InnerText){/dede:

提示:

如果使用带底层模板的标记,必须严格用{dede:

标记名称}这种格式,否则会报错。

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

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

globalname='

变量名称'

global}

其中变量名称不能加$符号,如变量$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"

;

tagname}

@me表示这个标记本身的值,因此标记内编程是不能使用echo之类的语句的,只能把所有返回值传递给@me。

此外由于程序代码占用了底层模板InnerText的内容,因此需编程的标记只能使用默认的InnerText。

二、解析方式

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

classDedeAttribute属性结构表述

classDedeAttributeParse属性解析器

classDedeTag标签结构表述

classDedeTagParse标签解析器

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

1、初始化:

$dtp=newDedeTagParse();

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

$dtp->

LoadTemplate(模板文件(绝对路径));

//会生成缓存,第二次不需解析模板

LoadSource(字符串);

3、给标签赋值

foreach($dtp->

CTagsas$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

display();

SaveTo(静态文件名);

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

classDedeTag

var$IsReplace=FALSE;

//标记是否已被替代,供解析器使用

var$TagName="

"

//标记名称

var$InnerText="

//标记之间的文本

var$StartPos=0;

//标记起始位置

var$EndPos=0;

//标记结束位置

var$CAttribute="

//标记属性描述,即是classDedeAttribute

var$TagValue="

//标记的值

var$TagID=0;

//获取标记的名称和值

functionGetName()

returnstrtolower($this->

TagName);

functionGetValue()

return$this->

TagValue;

//下面两个成员函数仅是为了兼容旧版

functionGetTagName()

functionGetTagValue()

//获取标记的指定属性

functionIsAttribute($str)

CAttribute->

IsAttribute($str);

functionGetAttribute($str)

GetAtt($str);

functionGetAtt($str)

functionGetInnerText()

InnerText;

动态模板类:

核心类文件

include/dedetemplate.class.php

用途:

用于非核心模块的动态页面或列表页的模板解析,如:

member/content_list.php,通常是在datalistcp.class.php中使用,这个类在动态运行的情况下,由于本身是把模板编译成PHP的,因此性能上会优级于旧的解析类,这个方法将在未来版本中作为通用的方式。

一、使用方法:

$tpl=newDedeTemplate(

模板对象实例名称,通常是'

tpl'

[模板存放目录(生成缓存时会存放在这个目录),

include语法默认引用目录]

通常情况下参数二和参数三是不必要的,如:

$tpl=newDedeTemplate('

如果在类文件中调用,应该加上设置:

$this->

tpl->

SetObject($this);

在一些块调用中默认将使用当前类的成员函数。

$tpl->

LoadTemplate(模板的物理路径);

如果模板中带有{dede:

configname='

value='

/}

可以在载入模板后,通过$tpl->

GetConfig($name)获得这些变量的值。

显示页面或保存页面为文件

SaveTo(物理绝对路径的文件名);

二、模板标记语法

1、标记通用特性

(1)短标记

tagname.name/}

等同于

tagnamename='

/}

(2)块标记

tagname}

循环代码

2、标记的具体语法及对应的PHP代码

(1)配置变量

配置变量可以在载入模板后通过$tpl->

GetConfig($name)获得,仅作为配置,不在模板中显示。

(2)短标记

global.name/}外部变量等同于<

?

phpecho$name;

?

>

var.name/}var数组等同于<

phpecho$_vars['

name'

];

field.name/}field数组等同于<

phpecho$fields['

cfg.name/}系统配置变量等同于<

phpecho$cfg_name;

考虑到大多数情况下都会在函数或类中调用模板,因此$_vars、$fields数组必须声明为global数组,否则模板引擎无法获得它的值从而导致产生错误。

(3)自由调用块标记

blocknamebind='

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中获取数组并输出

遍历一个二给维数组,数据源是固定的,只适用用类调用。

等同于

rstype='

arrayu'

[2]label

从绑定函数中获取字符串值并输出

等同于{tag:

func'

sub'

string'

[3]pagelist

从绑定类成员函数GetPageList中获取字符串值并输出

GetPageList'

(5)include语法

includefilename='

(6)php代码块

php

php代码

php}

php代码

(7)if条件

仅支持if,else,else直接用{else}表示,但不支持{elseif}这样的语法,一般建议模板中不要使用太复杂的条件语法,如果确实有需要,可以直接使用php语法。

if条件}a-block{else}b-block{/dede:

if}

条件中允许使用var.name、global.name、field.name、cfg.name表示相应的变量。

如:

iffield.id>

10}

(8)遍历一个array数组

array.name}

{dede:

key/}={dede:

value/}

array}

各种语法的具体编译后的代码,可查看dede-template-class.php的functionCompilerOneTag(&

$cTag)。

块调用示例代码:

1、示例一

datalisttimeformat="

tr>

tdclass='

col1'

div>

<

ahref='

field.arcurl/}'

field.title/}<

/a>

/div>

!

--divclass='

descriptions'

&

nbsp;

field.descriptionfunction="

CnSubstr(@me,150)"

/}...<

/div-->

/td>

col2'

field.formattime/}<

/tr>

编译后的代码

$atts=array();

$atts['

tagname'

]='

datalist'

timeformat'

$blockValue=$this->

refObj->

GetArcList($atts,$this->

refObj,$fields);

foreach($blockValueas$key=>

$fields)

arcurl'

title'

phpechoCnSubstr($fields['

description'

],150);

...<

formattime'

2、示例二

articlesort='

new'

titlelen='

36'

row='

10'

dd>

[{tag:

field.typename/}]<

ahref="

field.arcurl/}"

field.titlefunction="

CnSubstr(@me,24)"

/}<

/dd>

article}

article'

sort'

titlelen'

row'

$blockValue=MakePublicTag($atts,$this->

if(is_array($blockValue)&

count($blockValue)>

0){

[<

typename'

]<

],24);

/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 哲学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1