织梦二次开发常用函数.docx_第1页
织梦二次开发常用函数.docx_第2页
织梦二次开发常用函数.docx_第3页
织梦二次开发常用函数.docx_第4页
织梦二次开发常用函数.docx_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Dede标签快速手册(更新ing)发布者:临安奇奇网络技术 时间2009-08-24 浏览次数: 8515次 dede:global.cfg_webname/ 站点名称dede:global.cfg_basehost/ 站点url(后台设置)dede:global.cfg_cmsurl/ 站点实际url(奇奇推荐)dede:global.cfg_memberurl/ 会员中心地址dede:global.cfg_dataurl/ 站点data目录地址dede:global.cfg_templeturl/ 模板目录地址dede:global.cfg_powerby/ 底部版权dede:global.cfg_beian/ 备案信息dede:field.description function=html2text(me)/ 站点描述dede:field.phpurl/ 站点plus目录站点地址dede:field.title/ 标题dede:field.keywords/ 关键字dede:flink row=24/友情链接dede:field.content/ 栏目内容dede:field.position/ 当前位置dede:field.pubdate function=MyDate(Y-m-d H:i,me)/ 时间dede:field.source/ 来源dede:field.writer/ 作者 点击次数dede:field.body/ 文章内容dede:adminname/ 责任编辑dede:pagebreak/ 页码dede:prenext get=pre/ 上一篇dede:prenext get=next/ 下一篇导航dede:channel type=self currentstyle=typenamefield:typename/dede:channeldede:include filename=*.htm/ 调用模板文件dede:memberinfos 头像field:uname/ 用户名查看详细资料发送留言加为好友用户等级:field:rankname /注册时间:field:jointime function=MyDate(Y-m-d H:m,me)/最后登录:field:logintime function=MyDate(Y-m-d H:m,me)/dede:memberinfos收藏挑错推荐打印文档列表dede:arclist titlelen=42 row=10 field:title/ field:description function=cn_substr(me,80)/. /dede:arclist常用函数/类参考 - 动态模板类发布者:织梦官方 时间2009-08-11 浏览次数: 684次 核心类文件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:/等同于dede:tagname name= /(2) 块标记dede:tagname循环代码/dede:tagname2、标记的具体语法及对应的PHP代码(1) 配置变量dede:config name= value=/配置变量可以在载入模板后通过 $tpl-GetConfig($name) 获得,仅作为配置,不在模板中显示。(2) 短标记 dede:/ 外部变量 等同于 dede:/ var数组 等同于 dede:/ field数组 等同于 dede:/ 系统配置变量 等同于 考虑到大多数情况下都会在函数或类中调用模板,因此 $_vars、$fields 数组必须声明为 global 数组,否则模板引擎无法获得它的值从而导致产生错误。(3) 自由调用块标记tag:blockname bind=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:blockname bind=GetArcList bindtype=class rstype=arrayu循环代码/tag:blockname2 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:phpphp 代码/或dede:phpphp代码/dede:php(7) if 条件仅支持 if ,else ,else 直接用else表示,但不支持else if这样的语法 ,一般建议模板中不要使用太复杂的条件语法,如果确实有需要,可以直接使用 php 语法。dede:if 条件 a-block else b-block /dede:if条件中允许使用 、 、 、 表示相应的变量。如:dede:if field.id10 /dede:if(8) 遍历一个 array 数组dede: dede:key/ = dede:value/dede:array各种语法的具体编译后的代码,可查看 dede-template-class.php 的 function CompilerOneTag(&$cTag)。块调用示例代码:1、示例一tag:datalist timeformat= ?tag:field.title/     tag:field.description function=CnSubstr(me,150)/. tag:field.formattime/ /tag:datalist编译后的代码refObj-GetArcList($atts,$this-refObj,$fields); 5. foreach($blockValueas$key=$fields) 6. 7. ? 8. 9. 10. ?ahref= 11.     . 12. 13. 14. 15. 2、示例二tag:article sort=new titlelen=36 row=10 tag:field.typename/tag:field.title function=CnSubstr(me,24)/tag:article编译后的代码1. refObj,$fields); 8. if(is_array($blockValue)&count($blockValue)0) 9. foreach($blockValueas$key=$fields) 10. 11. ? 12. ahref= 13. 自定义模型使用教程发布者:织梦官方 时间2009-08-11 浏览次数: 1578次 说明:DedeEIMS保留了系统自定义模型功能,该功能使用方法同DedeCMS V5系列中的自定义模型功能相似,故这里将应用老版本程序的教程。在织梦系统中有内容模型这个概念,不同内容模型可以用来构建不同内容形式的站点,在系统中自带了以下几种模型:普通文章、图集、软件、商品、分类信息、专题。通过系统自带的模型,我们可以用来构建不同类型的站点,例如:使用图集可以做一个图片站,用软件模型构建一个软件下载站点。当然以上随系统附带的模型被称为系统模型,用户可以自己定义一些模型,比如图书、音乐专辑等,自定义了这些模型才可以构建更多内容形式的站点,本篇将讲述如何使用系统的自定义模型管理功能来实现内容模型的构建。我们首先登录系统后台,点击核心-内容模型管理,进入内容模型管理界面,如下图所示:这里我们介绍几个相关参数的概念:ID号 用于区分模型的唯一ID,一般常规模型的ID都是大于0的,比如普通文章、软件等,如果使用了单表模型,ID一般需要小于-1,例如这里的分类信息模型;频道名称 用于识别频道类型的标识;识别id 系统用于识别的id,这个关系到模板方面;附加表 系统内容附加表项;模型类型 分为系统类型和自动类型,系统类型为固化在系统中的内容模型,自动类型为用户可创建的内容模型类型;接下来我们开始介绍如何使用自定义模型管理来创建一个自己的模型,并且用于建设不同内容类型的网站中去。这里我们介绍一些周边的内容,几个要用到的概念:字段 在数据库中,表的列称为字段,织梦系统也是如此,但更恰当的说法,存储某个内容信息单元,称为字段,例如标题、来源、作者等都是一个字段;内容系统主表 程序将一些公用字段存储在系统主表dede_archives,例如:标题、关键词、缩略图等,主表具体字段可以查询织梦帮助中心()的有关二次开发手册数据表部分的内容;附加表 不同内容模型对应不同的附加表,通常以dede_addon识别ID命名,附加表中存放的都是详细内容的相关字段(非公用),例如:文章内容(dede_addonarticle)、软件类型(dede_addonsoft)、图片集合(dede_addonimage)等;单表独立模型 存储时候不用到“主表附加表”的结构形式,直接使用单个数据表进行存储内容数据,这样脱离主从表,减少主表数据服在开销,可以从很大程度上解决数据负载问题;明白了以上几个概念我们可以来学习如何来自己创建一个内容模型了。一个完整的内容模型包含模型数据表、数据字段、模型模板、模型参数4个部分,制作一个内容模型大致有以下几个步骤:1.模型规划;2.模型制作;3.模板制作;4.栏目设置,下面我们从上面4个步骤来讲解内容模型的制作。这里我们以一个图书模型(book)为例子,这个模型主要功能就是介绍书籍。模型规划模型规划分为几个部分一个是模型应用方面的规划,其次就是字段信息方面的规划,以图书(book)模型为例子,我们现规划一个频道使用这个模型,这个频道作用就是让大家分享一些好的学习资料,这里主要是编程方面的书籍,所以栏目划分大致如下:以下为引用的内容:网络编程书籍|_ASP相关 |_PHP相关 |_JSP相关 |_.NET相关这几个栏目是支持会员投稿的,因为这个推荐的书籍不是很多,所以直接采用主从表的形式,不使用独立单表模型,因为涉及到会员分享,所以这里需要会员投稿,我们给投稿会员级别设置为中级会员才有权限,并且需要摘要和说略图,投稿之后需要经过管理员审核,这样基本的使用规划完成,下面就是字段方面的规划了。因为介绍一本书,我们规划了以下内容:出 版 社publish单行文本(varchar)出版时间pubtime时间类型字数cnum整数类型版次pubnum整数类型页数pagenum整数类型印刷时间pritime时间类型开本kbook单行文本(varchar)印次prinum整数类型纸张pages单行文本(varchar)I S B Nisbn单行文本(varchar)包装packs单行文本(varchar)内容简介bodyHTML文本作者简介wrbodyHTML文本目录bindexHTML文本这样,我们完成了第一步模型的规划。模型制作规划完成了,接下来我们开始将这些规划的内容创建为一个内容模型。首先以超级管理员身份登录到系统后台。点击核心-模型管理,点击“增加新模型”按钮来创建模型。按照系统提示配置模型的基本信息,这里因为选择的是自动模型,所以档案发布的相管程序页面只需要保留默认即可。因为我们发布的是图书,所以这里“投稿标题使用名称”设置为:图书名称。因为这里我们使用的是自动模型,没有自己制作相应的发布管理程序,所以下面的相关模型发布程序保持默认即可,当然如果你有一定的编程能力,可以自己制作一个内容发布程序,然后在这里指定即可。基本信息设置完毕,直接单击确定即可,进入到字段管理的页面,点击字段管理中的“添加新字段”按钮,进入字段添加页面,我们根据相关的字段信息进行字段添加。下面是一些字段类型我们对部分字段进行一些说明:以下为引用的内容:单行文本(varchar) :常用字段,如文章标题、作者等都属于直接输入少量内容的文本,设置这个文本之后需要指定文本长度,默认为250,如果大于255则为text类型多行文本:也是较为常用的字段类型,如个人简介、产品描述都可以使用多行文本进行存储HTML文本:用织梦编辑器编辑产生的html内容,用于比较复杂的内容形式附件类型:可以后台上传附件让用户下载,附件类型可以在后台进行设置option下拉框:下拉选择,一般用于如软件类型、语言类型等字段联动类型:一种数组形式的数据类型,可以在系统后台联动类型管理中进行设置了解了这些字段类型我们就可以添加我们的字段信息了。添加完成点击确定即可,这样我们就完成了这个模型的制作。模型添加完毕之后我们发现在内容发布的地方多出来一个发布图书的选项,这个说明我们的模型就已经成功添加了。模板制作我们通过织梦帮助中心的主要模板文件与功能说明了解到每个模型还需要制作对应的模型模板文件,我们可以通过后台模型管理中的模板文件说明查看模板文件。模板制作主要有2个地方需要讲解下。1. 列表页模板list_识别ID.htm中显示在列表中需要调用添加扩展的字段需要在添加字段页面勾选“使字段可以在列表的底层模板中获得(自定义字段默认仅能在文档模板显示,启用此选项将使列表查询变慢,如无必要请不要选择)”,这样在dede:list/标签中就可以使用field:fieldname/来进行调用。2. 内容页的标签可以使用dede:field.fieldname / 进行调用,具体可以参考帮助中心模板相关的帮助文档。栏目设置接下来我们就可以来添加一个栏目,在栏目设置中将栏目的内容模型设置为图书然后我们就可以在这个栏目下添加文档,会发现我们现在可以发布图书内容了添加完成之后,我们可以浏览我们的网站页面,预览我们的模型效果。至此我们完成了整个模型的制作,整个过程还是非常简单的。这里只介绍了自动模型的制作,当然有一定PHP基础的用户可以自己开发系统模型,这样就会拥有更为强大的织梦系统,使得网站内容更加丰富。常用函数/类参考 - 静态模板类发布者:织梦官方 时间2009-08-11 浏览次数: 529次 类文件include/dedetag.class.php这个文件是DedeEIMS及之前版本使用的主要的模板类,它是解析式模板类,并非编译式的(区别是前者通过获得标签位置进行内容替换,后者是直接解析式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(静态文件名);对于二次开发人员而言,不大需要知道DedeEIMS模板具体解析方式,不过应该十分清楚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; 常用函数/类参考 - 动态分页类发布者:织梦官方 时间2009-08-11 浏览次数: 305次 类文件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:datalistfield.fieldname1/ - field.fieldname2/ ./dede:datalisttag:pagelist listitem=info,index,end,pre,next,pageno listsize=5/listitem、listsize 是可选属性如果需要自定义 datalist 相关属性,可以继续本类来创建一个新类,只需改变 GetArcList($atts,$refObj=,$fields=array() 方法即可。常用函数/类参考 - 数据库类发布者:织梦官方 时间2009-08-11 浏览次数: 354次 系统会自动载入 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,14、执行条件查询语句$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($tbna

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论