织梦dedecms二次开发和织梦模板制作系列教程汇总一、织梦dedecms二次开发教程系列织梦二次开发教程(一)织梦dedeCms主要模板文件与功能说明一、概念,设计和使用模板,必须要理解下面几个概念1、板块(封面)模板:指网站主页()或比较重要的栏目封面频道使用的模板,一般用“index_识别ID.htm”命名,此外,用户单独定义的单个页面或自定义标记,也可选是否支持板块模板标记,如果支持,系统会用板块模板标记引擎去解析后才输出内容或生成特定的文件。
2、列表模板:指网站某个栏目的所有文章列表的模板,一般用“list_识别ID.htm”命名。
3、档案模板:表示文档查看页的模板,如文章模板,一般用“article_识别ID.htm”命名。
4、其它模板:一般系统常规包含的模板有:主页模板、搜索模板、RSS、JS编译功能模板等,此外用户也可以自定义一个模板创建为任意文件。
二、命名,DedeCMS模板默认命名规则如下1、模板保存位置:模板目录:{cmspath} /templets/样式名称(英文,默认为default,其中system为系统底层模板,plus为插件使用的模板)/具体功能模板文件}2、模板文件命名规范:(1)index_识别ID.htm:表示板块(栏目封面)模板;(2)list_识别ID.htm:表示栏目列表模板;(3)article_识别ID.htm:表示内容查看页(文档模板,包括专题查看页);(4)search.htm:搜索结果列表模板;(5)index.htm:主页模板;注解:[识别ID]可以在“频道模型管理”的地方获得,当然,你也可以在“频道模型管理”的地方确定某个频道的模板命名。
例:list_image.htm 表示是就是内容类型为图片集的栏目默认列表模板。
article_article.htm 表示的是文章查看页模板。
三、其它模板说明1、默认底层模板位置:{cmspath}/templets/system功能:在没有指定标记的默认底层模板的时候,系统将自动调用这个文件夹的相应文件作为底层模板。
2、插件目录模板位置:{cmspath}/templets/plus功能:评论、友情链接、RSS地图等模板。
3、会员后台模板位置:{cmspath}/member/templets功能:会员后台的模板。
四、二次开发在V5.3中已经将标签开发分离出来,您可以通过后台[模板]-[标签代码管理],点击“新增加一个新的标签”来创建一个自己的标签,标签文件名为:标签名.lib.php接口函数定义为:function lib_标签名(&$ctag,&$refObj),返回值是结果字符串修改标签时为了防止出错,您也可以修改它的名称(同时修改文件名和函数名),这样等同继织梦二次开发教程(二)模板标签语法简介织梦的模板标签类似于XML格式,所有的模板都含有定界符,默认情况下是{dede:*}和{/dede:*},“*”代表模板标记名称。
一般情况下{dede:*}和{/dede:*}是成对出现的,例如:例1-1:{dede:arclist flag='h' limit='0,1'}<br /><h2><a href="[field:arcurl/]">[field:title/]</a></h2><br /><p>[field:description/]...<a href="[field:arcurl/]">[查看全文]</a></p><br /> {/dede:arclist}上面的{dede:arclist}和{/dede:arclist}成对出现在模板文件中,并且在两个标签当中包含了底层模板(innertext)。
底层模板(Innertext),底层模板实际上就是对于有多条记录的模板输出,用户手工去指定单个记录的样式。
标签还有一类出现形式是{dede:*/},通常以这种形式出现都是输出变量、或者不含底层模板的内容。
例如:1-2{dede:global.cfg_webname/}{dede:arclist flag='h' limit='0,1'/}如果用户没有指定单个记录的样式,系统部分标签都含有默认的底层模板,具体可以查看{cmapath}/templets/system/文件夹下面的文件,这里面都是系统的底层模板文件。
注释织梦标签的模板注释非常灵活,可以通过标签后面的commet属性进行赋值。
例1-3:{dede:arclist flag='h' limit='0,1' commet='调用头条的第一篇内容'}<br /><h2><a href="[field:arcurl commet="这是文章链接标签"/]">[field:titlecommet="这是文章标题标签"/]</a></h2><br /><p>[field:description commet="这是摘要标签"/]...<a href="[field:arcurl commet="这是文章链接标签"/]">[查看全文]</a></p><br />{/dede:arclist}在模板引擎将上述标签解析为html的时候,commet的内容是被忽略掉不去解析的,用户在阅读模板标记的时候可以更好的理解标签的意义。
函数每一个织梦()的标签都可以使用自定义函数对其进行扩展,自定义函数内容主要用于对当前标签输出内容进行处理。
例1-4:{dede:标记名称function='youfunction("参数一","参数二","@me")'/}其中@me 用于表示当前标记的值,其它参数由你的函数决定是否存在,例如:{dede:field.pubdate function='strftime("%Y-%m-%d %H:%M:%S","@me")'/} 属性模板标签的属性,决定了模板标记输出的形式,例如arclist标签主要功能是列出文档列表,但列出什么内容、按照什么方式进行排序等取决于模板标签的属性。
在织梦的模板标签说明中含有各个模板的标签属性可以详细查阅。
可以查看例1-1中的flag='h' limit='0,1',这里flag和limit是标签的相关属性,通过手册可以查阅属性的介绍。
如果模板标签如果没有列出属性,系统有默认属性值,用户可以参考模板标签说明查看默认属性。
编程织梦模板很方便的一个地方就是支持简单的模板编程。
格式为:{dede:tagname runphp='yes'}<br />$aaa = @me;<br />@me = "123456";<br />{/dede:tagname}@me 表示这个标记本身的值,因此标记内编程是不能使用echo之类的语句的,只能把所有返回值传递给@me。
此外由于程序代码占用了底层模板InnerText的内容,因此需编程的标记只能使用默认的InnerText。
织梦二次开发教程(三)common.func.php公用函数说明获得当前的脚本网址function GetCurUrl()返回格林威治标准时间function MyDate($format='Y-m-d H:i:s',$timest=0)台的[核心]-[频道模型]-[联动类别管理]查看,联动类别其定义如下:系统一种特殊的枚举数据类别,可以有系统内置或由用户管理。
系统内置的枚举用户是不可以删除的,但可以对这些数据进行添加子分类及修改。
到这里可能一些用户还是不了解什么是联动类型,下面我们举几个简单的例子。
一个最简单的联动类型是只有一级选择的类型,比如说系统内置的星座、教育程度、血型,这种类型你可以点击进去查看,其结构很简单,例如星座(star):在这个联动类别中级数为“一级选择”,就是在这个星座类别下面只有一列品级数据进行选择,我们点击进去可以查看到以下内容:这个让我们很容易联想到许多网站中设置用户资料的时候,需要用户选择星座,我们就可以通过一个下拉框进行选择:当然,上面说到的是最简单的联动类别,只有一级联动,这种一级联动就可以好比是一个下拉框,用户在选择具体数据的时候只要通过下拉框这种形式就可以对数据进行选择。
但是我们在很多联动数据中遇到不少需要二级联动的类型,例如我们在资料设置中选择“所在城市”这个类别,如下图所示这种数据类型就属于需要选择2次分类,首先选择上海市,然后列出上海市拥有的地区,然后再进行第二次选择,这就是一个二级联动的类别,我们可以通过系统后台查看联动类别中的地区来看看系统的枚举类型。
通过以上2个例子我们不难理解联动类型的概念,其实说简单了就是一种特殊的枚举数据类型,这种特殊的枚举类型运用在创建内容模型、用户资料等数据录入的页面中,其中应用在创建模型及用户自定义表单是联动类别最常用的地方,下面我们来介绍如何使用这个联动模型。
我们以创建一个“图书(book)”内容模型为例,这个模型中我们需要网站管理员(用户)提交一个图书特征的分类,我们知道以下图书特征的分类:线装书,精装书,平装书,袋装书,电子书,有声读物,盲人书下面我们就创建一个这个一级选择的枚举类型,这个类型叫图书特征(bookfeature),我们点击“新增类别组”来创建分类。
创建完成后我们将类别的内容全部添加到这个类别中去,在页面中提示我们如果一次性添加多个类别可以用“,”将不同类别隔开,然后一次性添加。
这样我们就创建完成了这个图书特征(bookfeature)的联动类型,接下来我们要应用这个联动类型,我们在新创建的模型中添加字段,在字段添加的页面中添加相应的字段名称,选择数据类型为联动类型,如下图所示:在我们发布图书内容的时候,就会发现有一个选择是图书特征的内容类型选择,不过个人建议如果设计一级联动选择,最好还是使用“option下拉框”这个数据类型。