dedecms, 常用, 函数, 参考, 动态
DedeCmsV5.3常用函数参考:动态网站的模板类核心类文件include/dedetemplate.class.php用途:用于非核心模块的动态页面或列表页的网站的模板解析,如:member/content_list.php,通常是在datalistcp.class.php中使用,这个类在动态运行的情况下,由于本身是把网站的模板编译成PHP的,因此性能上会优级于旧的解析类,这个具体的方法将在未来版本中作为通用的方式。 一、使用具体的方法:$tpl=newDedeTemplate(网站的模板对象实例名称,通常是'tpl',[网站的模板存放目录(生成缓存时会存放在这个目录),include语法默认引用目录]);通常情况下参数二和参数三是不必要的,如:$tpl=newDedeTemplate('tpl');如果在类文件中调用,应该加上设置:$this->tpl->SetObject($this);在一些块调用中默认将使用当前类的成员函数。 $tpl->LoadTemplate(网站的模板的物理路径);如果网站的模板中带有{dede:configname=''value=''/}可以在载入网站的模板后,通过$tpl->GetConfig($name)获得这些变量的值。 显示页面或保存页面为文件$tpl->Display();$tpl->SaveTo(物理绝对路径的文件名);二、网站的模板标记语法1、标记通用特性(1)短标记{dede:tagname.name/}等同于{dede:tagnamename=''/}(2)块标记{dede:tagname}循环具体代码如下{/dede:tagname}2、标记的具体语法及对应的PHP具体代码如下(1)配置变量{dede:configname=''value=''/}配置变量可以在载入网站的模板后通过$tpl->GetConfig($name)获得,仅作为配置,不在网站的模板中显示。 (2)短标记{dede:global.name/}外部变量等同于{dede:var.name/}var数组等同于{dede:field.name/}field数组等同于{dede:cfg.name/}系统配置变量等同于考虑到大多数情况下都会在函数或类中调用网站的模板,因此$_vars、$fields数组必须声明为global数组,否则网站的模板引擎无法获得它的值从而导致产生错误。 (3)自由调用块标记{tag:blocknamebind='GetArcList'bindtype='class'}循环具体代码如下{/tag:blockname}必要属性:bind数据源来源函数bindtype函数类型,默认是class可选为subrstype返回结果类型,默认是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:blocknamebind='GetArcList'bindtype='class'rstype='arrayu'}循环具体代码如下{/tag:blockname}[2]label从绑定函数中获取字符串值并输出等同于{tag:blocknamebind='func'bindtype='sub'rstype='string'/}[3]pagelist从绑定类成员函数GetPageList中获取字符串值并输出等同于{tag:blocknamebind='GetPageList'bindtype='class'rstype='string'/}(5)include语法{dede:includefile=''/}{dede:includefilename=''/}(6)php具体代码如下块{dede:phpphp具体代码如下/}或{dede:php}php具体代码如下{/dede:php}(7)if条件仅支持if,else,else直接用{else}表示,但不支持{elseif}这样的语法,一般建议网站的模板中不要使用太复杂的条件语法,如果确实有需要,可以直接使用php语法。 {dede:if条件}a-block{else}b-block{/dede:if}条件中允许使用var.name、global.name、field.name、cfg.name表示相应的变量。 如:{dede:iffield.id>10}{/dede:if}(8)遍历一个array数组{dede:array.name}{dede:key/}={dede:value/}{/dede:array}各种语法的具体编译后的具体代码如下,可查看dede-template-class.php的functionCompilerOneTag(&$cTag)。 块调用示例具体代码如下:1、示例一{tag:datalisttimeformat=""}[tr][td]?{tag:field.title/} {tag:field.descriptionfunction="CnSubstr(@me,150)"/}...[/td][td]{tag:field.formattime/}[/td][/tr]{/tag:datalist}编译后的具体代码如下refObj->GetArcList($atts,$this->refObj,$fields);foreach($blockValueas$key=>$fields){?>[tr][td]?'> ...[/td][td][/td][/tr]2、示例二{tag:articlesort='new'titlelen='36'row='10'}[{tag:field.typename/}]{tag:field.titlefunction="CnSubstr(@me,24)"/}{/tag:article}编译后的具体代码如下refObj,$fields);if(is_array($blockValue)&&count($blockValue)>0){foreach($blockValueas$key=>$fields){?>[]"> |
织梦手机端搜索不跳转手机搜索模板下载,而是跳转PC端模板下载的BUG