Dede二次开发程序详解

合集下载

phpwind 二次开发技术要点

phpwind 二次开发技术要点

phpwind 二次开发技术要点PHPWind是一款非常受欢迎的BBS论坛系统,它拥有丰富的功能和灵活的二次开发能力。

在进行PHPWind二次开发时,我们需要掌握一些关键的技术要点,以便能够快速高效地完成开发任务。

一、了解PHPWind框架结构和核心功能在进行二次开发之前,我们需要对PHPWind的框架结构和核心功能有一定的了解。

这包括了解PHPWind的目录结构、文件组织方式以及核心功能模块的实现方式等。

只有了解了这些基本概念,我们才能更好地进行二次开发。

二、掌握PHP编程技术PHPWind是基于PHP语言开发的,因此我们需要熟悉PHP编程技术。

这包括了解PHP的语法、函数库和面向对象编程等方面的知识。

只有熟练掌握了PHP编程技术,我们才能够在二次开发中灵活运用这些技术,提高开发效率。

三、熟悉PHPWind的数据库结构和操作方法PHPWind的数据存储是基于关系型数据库的,因此我们需要熟悉PHPWind的数据库结构和操作方法。

这包括了解PHPWind的数据库表结构、字段含义和操作方式等。

只有熟悉了数据库结构和操作方法,我们才能够在二次开发中对数据库进行操作,实现自己的需求。

四、了解PHPWind的模板引擎和模板语法PHPWind使用自己的模板引擎来实现页面的展示和渲染,因此我们需要了解PHPWind的模板引擎和模板语法。

这包括了解PHPWind模板引擎的基本工作原理、模板语法的使用方法和常用的模板标签等。

只有掌握了模板引擎和模板语法,我们才能够在二次开发中灵活运用模板技术,实现自定义的页面展示效果。

五、熟悉PHPWind的插件机制和扩展接口PHPWind提供了插件机制和扩展接口,方便开发者对系统进行功能扩展和定制。

我们需要熟悉PHPWind的插件机制和扩展接口,了解插件的开发方式和接口的使用方法。

只有熟悉了插件机制和扩展接口,我们才能够针对自己的需求进行功能扩展和定制。

六、注重代码的规范和优化在进行PHPWind二次开发时,我们需要注重代码的规范和优化。

5、dede织梦CMS二次发--标签篇

5、dede织梦CMS二次发--标签篇

标签篇adminname仅内容模板V55,V56,V57获得责任编辑名称基本语法{dede:adminname /}arclist全局标记V55,V56,V57获取指定文档列表基本语法{dede:arclist flag='h' typeid='' row='' col='' titlelen='' infolen='' imgwidth='' imgheight='' type='' orderby='' keyword='' limit='0,1'}<a href='[field:arcurl/]'>[field:title/]</a>{/dede:arclist}标签属性∙col:分多少列显示(默认为单列),5.3版中本属性可以通过多种方式进行多行显示∙row:返回文档列表总数(获取的总记录数)∙typeid:栏目ID,在列表模板和档案模板中一般不需要指定,在首页模板中允许用","分开表示多个栏目∙getall:在没有指定这属性的情况下,在栏目页、文章页模板,不会获取以","分开的多个栏目的下级子类∙titlelen:标题长度等同于titlelength∙infolen:表示内容简介长度等同于infolength∙imgwidth:缩略图宽度∙imgheight:缩略图高度∙type: 栏目类型image含有缩略图commend推荐∙orderby:文档排序方式∙keyword:含有指定关键字的文档列表,多个关键字用","分∙innertext:单条记录样式∙aid:指定文档ID∙idlist:提取特定文档(文档ID∙channelid:频道ID∙limit:(起始ID从0开始)表示限定的记录范围(如:limit='1,2' 表示从ID为1的记录开始,取2条记录∙flag:自定义属性值:头条[h]推荐[c]图片[p]幻灯[f]滚动[s]跳转[j]图文[a]加粗[b]∙noflag:同flag,但这里是表示不包含这些属性∙orderway:值为desc 或asc ,指定排序方式是降序还是顺向排序,默认为降序∙subday:表示在多少天以内的文档∙Limit和row 的优先级limit 优先∙关于图片显示,如果没有type属性那么所有记录都显示缩略图,没有缩略图的显示默认的,type属性值为image 时显示只带缩略图的记录,type属性值为commend时显示推荐的记录∙同一属性多次存在时,执行最后一个属性值arclistsg全局标记V55,V56,V57单表独立模型的文档列表调用标记基本语法{dede:arclistsg flag='h' typeid='' row='' col='' titlelen='' orderway='' keyword='' limit='0,1'}<a href='[field:arcurl/]'>[field:title/]</a>{/dede:arclistsg}标签属性∙row:返回文档列表总数∙typeid:栏目ID,在列表模板和档案模板中一般不需要指定,在封面模板中允许用","分开表示多个栏目∙titlelen:标题长度等同于titlelength∙orderwey:排序方向∙keyword:含有指定关键字的文档列表,多个关键字用","分∙innertext:单条记录样式(innertext是放在标签之间的代码)∙arcid:指定文档ID∙idlist:提取特定文档(文档ID)∙channelid: 频道ID∙limit:表示限定的记录范围∙flag:自定义属性值:头条[h]推荐[c]图片[p]幻灯[f]滚动[s]跳转[j]图文[a]加粗[b]∙subday:表示在多少天以内的文档∙arcpagelistask全局标记V55,V56,V57问答调用标签基本语法{dede:ask row='6' qtype='new' tid='0' titlelen='24'}<dd><span class="tclass">[<a href='[field:typeurl/]'>[field:tidname/]</a>]</span><span class="tlink"><a href="[field:url/]">[field:title/]</a></span></dd>{/dede:ask}标签属性∙row:调用条数∙qtype:排序类型commend 推荐、ok 表示已解决问题、high 高分问题、new 最新问题∙tid:栏目id,默认是全部∙titlelen:标题长度autochannel全局标记V55,V56,V57指定排序位置的单个栏目的链接基本语法{dede:autochannel partsort='' typeid=’’}{/dede:autochannel}标签属性∙partsort:栏目所在的排序位置∙typeid:获取单个栏目的顶级栏目bookcontentlist全局标记V55,V56,V57连载图书最新内容调用基本语法{dede:bookcontentlist row='12' booktype='-1' orderby='lastpost' author='' keyword=''} <table width="100%" border="0" cellspacing="2" cellpadding="2"><tr><td width='40%'>[[field:cataloglink/]] [field:booklink/]</td><td width='40%'>[field:contentlink/]</td><td width='20%'>[field:lastpost function="GetDateMk(@me)"/]</td></tr></table>{/dede:bookcontentlist}标签属性∙row:调用记录条数∙booktype:图书类型,0 图书、1 漫画,默认全部∙orderby:排序类型,当按排序类型为commend 表示推荐图书∙author:作者∙keyword:关键字booklist全局标记V55,V56,V57连载图书调用基本语法{dede:booklist row='12' booktype='-1' orderby='lastpost' author='' keyword=''}<a href='[field:bookurl /]'>[field:bookname /]</a><br />{/dede:booklist}标签属性∙row:调用记录条数∙booktype:图书类型,0 图书、1 漫画,默认全部∙orderby:排序类型,当按排序类型为commend 表示推荐图书∙author:作者∙keyword:关键字cattree全局标记V55,V56,V57调用树形类目基本语法{dede:cattree typeid='' catid='' showall=''/}标签属性∙typeid:顶级树id∙catid:上级栏目id∙showall:在空或不存在时,强制用产品模型id;如果是yes 刚显示整个语言区栏目树;为其它数字则是这个数字的模型的id∙Typeid 存在值表示获取该栏目同级的同类型分类树,catid 存在值获取该栏目下的分类树∙Catid 的优先级高于typeidchannel全局标记V55,V56,V57用于获取栏目列表基本语法{dede:channel type='top' row='8' currentstyle="<li><a href='~typelink~' class='thisclass'>~typename~</a> </li>"}<li><a href='[field:typelink/]'>[field:typename/]</a> </li>{/dede:channel}标签属性∙typeid:栏目ID∙reid:上级栏目ID∙row:调用栏目数∙col:分多少列显示(默认为单列)∙type:son表示下级栏目,self表示同级栏目,top顶级栏目(top 最高,只要有该值不管typeid 和reid 的值)∙currentstyle:应用样式∙channelartlist全局标记V55,V56,V57获取当前频道的下级栏目的内容列表标签基本语法{dede:channelartlist row=6}<dl><dt><a href='{dede:field name='typeurl'/}'>{dede:field name='typename'/}</a></dt> <dd>{dede:arclist titlelen='42' row='10'} <ul class='autod'><li><a href="[field:arcurl /]">[field:title /]</a></li><li>([field:pubdate function="MyDate('m-d',@me)"/])</li></ul>{/dede:arclist}</dl>{/dede:channelartlist}标签属性∙typeid:频道ID∙row:获取的栏目返回值demotag全局标记V55,V56,V57这仅是一个演示标签基本语法{dede:demotag /}feedback全局标记V55,V56,V57用于调用最新评论基本语法{dede:feedback}<ul><li class='fbtitle'>[field:username function="(@me=='guest' ? '游客' : @me)"/] 对[field:title/] 的评论:</li><li class='fbmsg'> <a href="plus/feedback.php?aid=[field:aid/]" class='fbmsg'>[field:msg /]</a></li></ul>{/dede:feedback}标签属性∙row:调用评论条数∙titlelen:标题长度∙infolen:评论长度flink全局标记V55,V56,V57用于获取友情链接基本语法{dede:flink row='24'/}标签属性∙type:链接类型∙row:链接数量∙titlelen:站点文字的长度∙linktype:链接位置内页∙typeid:所有类型,可以在系统后台[模块]-[友情链接]中的“网站类型管理”中查看∙flinktype全局标记V55,V56,V57用于获取友情链接类型基本语法{dede:flink row='24'/}标签属性∙row:链接类型数量∙titlelen:链接文字的长度group全局标记V55,V56,V57圈子调用标签基本语法{dede:group row='6' orderby='threads' titlelen='30'}<li><span><img style="visibility: inherit;" title="[field:groupname/]" src="[field:icon/]" /></span> <span><a href="[field:url/]" title="[field:groupname/]" target="_blank">[field:groupname/]</a></span></li>{/dede:group}标签属性∙row:调用条数∙orderby:排列顺序(默认是主题数)∙titlelen:圈子名称最大长度groupthread全局标记V55,V56,V57圈子主题调用标签基本语法{dede:groupthread gid='0' orderby='dateline' orderway='desc' row='12' titlelen='30'}<li><a href='[field:groupurl/]' target="_blank">[[field:groupname function="cn_substr(@me,10)"/]]</a><a href="[field:url/]" title="[field:subject/]" target="_blank">[field:subject/]</a>([field:lastpost function="GetDateMk('@me')"/])</li>{/dede:groupthread}标签属性∙gid:圈子id,默认为全部∙orderby:排序,默认为时间∙orderway:排序方向,默认是最新主题在前∙row:记录数∙titlelen:主题标题(subject)最大长度hotwords全局标记V55,V56,V57获取网站搜索的热门关键字基本语法{dede:hotwords /}标签属性∙num:关键词数目∙subday:天数∙maxlength:关键词最大长度∙infoguide全局标记V55,V56,V57分类信息的地区与小分类搜索基本语法{dede:infoguide /}infolink全局标记V55,V56,V57调用分类信息地区与类型快捷链接基本语法{dede:infolink /}json全局标记V57调用某个远程连接的json数据库基本语法{dede:json url='http://yoursite/json.php' cache=300}[field:id/]-[field:title/]<br/>{/dede:json}标签属性∙url:json数据地址∙cache:缓冲时间likearticle全局标记V55,V56,V57自动关连文档标签基本语法{dede:likearticle row='' col='' titlelen='' infolen=''}<a href='[field:arcurl/]'>[field:title/]</a>{/dede:likearticle}标签属性∙col:分多少列显示(默认为单列)∙row:返回文档列表总数∙titlelen:标题长度等同于titlelength∙infolen:表示内容简介长度等同于infolength∙mytypeid:手工指定要限定的栏目id,用,分开表示多个∙innertext:单条记录样式(指标签中间的内容)likepage全局标记V55,V56,V57调用相同标识单页文档基本语法{dede:likepage likeid='' row=''/}标签属性∙row:调用条数∙likeid:标识名∙likesgpage全局标记V55,V56,V57单页文档调用标签基本语法{dede:likespage row=''/}标签属性∙row:调用条数loop全局标记V55,V56,V57调用任意表的数据标签基本语法{dede:loop table='dede_archives' sort='' row='4' if=''} <a href='[field:arcurl/]'>[field:title/]</a>{/dede:loop}标签属性∙table:查询表名∙sort:用于排序的字段∙row:返回结果的条数∙if:查询的条件memberinfos全局标记V55,V56,V57文档关连的用户信息基本语法{dede:memberinfos mid = '' /}标签属性∙mid:用户IDmemberlist全局标记V55,V56,V57会员信息调用标签基本语法{dede:memberlist orderby='scores' row='20'}<a href="../member/index.php?uid={dede:erid /}">{dede:erid /}</a> <span>{dede:field.scores /}</span>{/dede:memberlist}标签属性∙row:调用数目∙iscommend:是否为推荐会员∙orderby:按登陆时间排序money 按金钱排序scores 按积分排序myad全局标记V55,V56,V57获取广告代码基本语法{dede:myad name=''/}标签属性∙typeid:投放范围,0为全站∙name:广告标识∙mynews全局标记V55,V56,V57站内新闻调用标签基本语法{dede:mynews row='' titlelen=''/}标签属性∙row:调用站内新闻数∙titlelen:新闻标题长度∙mytag全局标记V55,V56,V57用于获取自定义宏标记的内容基本语法{dede:mytag typeid='0' name=''/}标签属性∙name:标记名称,该项是必须的属性,以下2、3是可选属性∙ismake:默认是no 表示设定的纯HTML代码,yes 表示含板块标记的代码∙typeid:表示所属栏目的ID,默认为0 ,表示所有栏目通用的显示内容,在列表和文档模板中,typeid默认是这个列表或文档本身的栏目ID∙php全局标记V55,V56,V57调用PHP代码基本语法{dede:php}$a = "dede";echo $a;{/dede:php}productimagelistsoftmsg软件内容模板V55,V56,V57下载说明标签基本语法{dede:softmsg /}sonchannel全局标记V55,V56,V57子栏目调用标签基本语法{dede:sonchannel}<a href='[field:typeurl/]'>[field:typename/]</a>{/dede:sonchannel}标签属性∙row:返回数目∙col:默认单列显示∙nosonmsg:没有指定ID子栏目显示的信息内容∙sqlV55,V56,V57用于获取MySQL数据库内容的标签基本语法{dede:sql sql='' db='default'}[field:title/]{/dede:sql}标签属性∙sql:需要查询的sql语句∙appname: 默认为default,即当前dedecms的数据库,如果需要自定义,可以在data/tag/sql.inc.php中扩展,具体扩展方法查看配置文件头部说明tag全局标记V55,V56,V57TAG调用标签基本语法{dede:tag sort='new' getall='0'}<a href='[field:link/]'>[field:tag /]</a>{/dede:tag}标签属性∙row:调用条数∙sort:排序方式month,rand,week∙getall:获取类型0 为当前内容页TAG标记,1为获取全部TAG标记type全局标记V55,V56,V57表示指定的单个栏目的链接基本语法<a href="[field:typelink /]">[field:typename /]</a>{/dede:type}标签属性∙typeid:指定栏目IDvote全局标记V55,V56,V57用于获取一组投票表单基本语法{dede:vote id='' lineheight='22' tablewidth='100%' titlebgcolor='#EDEDE2' titlebackground='' tablebgcolor='#FFFFFF'/}{/dede}标签属性∙id:数字,当前投票ID∙lineheight:表格高度∙tablewidth:表格宽度∙titlebgcolor:投票标题背景色∙titlebackground:标题背景图∙tablebg:投票表格背景色。

DEDE二次开发实例

DEDE二次开发实例
织梦 DedeCms 二次开发实例
织梦|DedeCms 系统关联到新浪微博教程 最近注册了新浪微博,发现特别有意思,发现里面有一个工具可以关键到站外的博客站点,这样每当有更新, 微博就会自动更新啦。 于是把自己用织梦做的站网址写进去,解决提示:无法关联,然后用填了一个用 wp 做的站,提示关联成功! 通过对比得知,新浪微博是利用 feed 找到更新文章的。只要给他指定 feed 地址就可以成功关联啦。 现在开始动手简单修改一下织梦的模板,由于织梦不能生成全站的 xml 文件,所以要先建立生成全站 XML 的 php 程序。 1,建立 feed.php <?php require_once (dirname(__FILE__) . "/include/common.inc.php"); require_once DEDEINC."/arc.partview.class.php"; $pv = new PartView(); $pv->SetTemplet($cfg_basedir . $cfg_templets_dir . "/wodede_com/feed.htm"); header("Content-type:application/xml"); $pv->Display(); ?>以上要注意的是修改 模 板 的 路 径 , 确 保 在 模 板 跟 目 录 能 够 找 到 feed.htm2 , 建 立 feed.htm 模 板 文 件 <?xml version="1.0" encoding="gb2312" ?> <rss version="2.0"> <channel> <title>{dede:global.cfg_webname/}</title> <link>{dede:global.cfg_basehost/}</link> <description>{dede:global.cfg_description/}</description> <language>zh-cn</language> <generator>{dede:global.cfg_webname/}</generator> <webmaster>{dede:global.cfg_adminemail/}</webmaster> {dede:arclist row='60' col='1' titlelen='100' orderby='pubdate'} <item> <link>[field:arcurl/]</link> <title><![CDATA[[field:title function='html2text(@me)'/]]]></title> <author>[field:writer/]</author> <category>[field:typename/]</category> <pubDate>[field:pubdate function='strftime("%a, %d %b %Y %H:%M:%S +0800",@me)'/]</pubDate> <guid>[field:arcurl/]</guid> <description><![CDATA[[field:description function='html2text(@me)'/] ... ]]></description> </item> {/dede:arclist} </channel> </rss> 需要注意的是,别忘了把我的网址改成你自己需要的。 3,修改 index.htm 主页模板 由于新浪微博只能验证网址,不能写完整路径, 比如我写的是:/feed.php。结果提示关联失败,解决的办法是,在<head>和</head>中间 加 入下 面 的代 码 <link rel="alternate" type="application/rss+xml" href="/feed.php" title=" 你的标题" > 通过以上方法就可以成功关联新浪微博了。

织梦dedecms二次开发

织梦dedecms二次开发

织梦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功能:在没有指定标记的默认底层模板的时候,系统将自动调用这个文件夹的相应文件作为底层模板。

重庆科创学院网站开发之DEDE插件开发 带数据库操作 dede二次开发范例

重庆科创学院网站开发之DEDE插件开发 带数据库操作  dede二次开发范例

dede插件简单的例子这是一个很简单插件实例,通过此插件,你可以知道怎么样开发一个插件,它结构是怎么设置的,数据库,后台等。

文件结构:enroll.php 文件在 plus文件下enroll.htm文件在templets/plus 文件夹下adenroll.php 文件在dede文件夹下adenroll.html 文件dede/templet文件夹下sql 文件:CREATE TABLE IF NOT EXISTS `dede_enroll` (`id` int(4) NOT NULL auto_increment,`name` varchar(20) NOT NULL,`mail` varchar(30) NOT NULL,`tag` tinyint(1) NOT NULL default '0',PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;INSERT INTO `dede_plus` (`aid`, `plusname`, `menustring`, `mainurl`, `writer`, `isshow`, `filelist`) VALU ES(30, '网上报名', '<m:item name=''网上报名'' link=''adenroll.php'' rank=''plus_网上报名'' target=''main'' />', '', 'g1000', 1, '');这里说明下为了方便我简单的设置了两个字段姓名和邮箱 tag字段是标示是否录取 1为录取第一个insert语句是添加到后台管理第二个insert语句是添加到前台导航栏enroll.php复制代码<?php//*******要先包含common.inc.php 然后 session_start(); 否则取不到session的值//*******因为common.inc.php 有关于session路径的配置include_once dirname(__FILE__).'./../include/common.inc.php';//包含配置文件session_start();require_once DEDEINC."/arc.partview.class.php";//包含partiew类//*****实例化这个类的作用是得到头部导航栏和尾部信息若不需要可以使用dedetemplate.class.php 这个类$pv = new PartView();if($_POST){if( CheckEmail($_POST['mail'])==false){//验证邮箱方法在common.func.php 公用函数ShowMsg('邮箱格式错误','-1');exit();}if($_POST['name']==""){ShowMsg('用户名不能为空','-1');exit();}else{$name=htmlspecialchars($_POST['name']);}if($_SESSION['dd_ckstr']!=strtolower($_POST['validation'])){//验证验证码必须转换成小写ShowMsg('验证码错误',-1);exit();}$sql="insert into `cms_enroll`(name,mail) values('$name','$_POST[mail]')";//********$db可直接使用系统自动实例化了dedesql.class.php$affected = $db->ExecuteNoneQuery2($sql);//执行一条语句返回影响值if($affected){ShowMsg('报名成功',-1);}}else{$pv->SetTemplet(DEDETEMPLATE.'/plus/enroll.htm');//设置模板$pv->Display();//显示页面}?>enroll.htm复制代码<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/ DTD/xhtml1-transitional.dtd"><head><title>{dede:global.cfg_webname/}-在线报名</title><link href="{dede:global.cfg_templeturl/}/style/dedecms.css" rel="stylesheet" media="screen" type="tex t/css" /></script></head><body>{dede:include filename="../default/head.htm"/}<!-- 包含头部 --><blockquote style="margin:50px auto" ><form method="post" action="">姓名:<input type="text" size=30 name="name" /><br /><br />邮箱:<input type="text" size=30 name="mail" /><br /><br /><!--vdimgck.php 是验证码-->验证码:<input type="text" name="validation" /><img src="../../include/vdimgck.php" /><br /><br /> <input name="encoll" type="submit" value="报名" /><br /></form></blockquote>{dede:include filename="../default/footer.htm"/}<!-- 包含尾部 --></body></html>adenroll.php复制代码<?phprequire_once(dirname(__FILE__).'/config.php');//后台配置文件检查登陆配置信息require_once(DEDEINC."/datalistcp.class.php");//包含分页类if($_GET['action']&&$_GET['id']){if($_GET['action']=='pass'){//各种操作$db->ExecuteNoneQuery("update cms_enroll set `tag`=1 where id='$_GET[id]'");ShowMsg('录取成功','adenroll.php');}if($_GET['action']=='nopass'){$db->ExecuteNoneQuery("update cms_enroll set `tag`=0 where id='$_GET[id]'");ShowMsg('取消录取','adenroll.php');}if($_GET['action']=='delete'){$db->ExecuteNoneQuery("delete from cms_enroll where id='$_GET[id]'");ShowMsg('删除成功','adenroll.php');}}else{$dl = new DataListCP();$dl->pageSize = 10;//每页显示10条$dl->SetTemplate('./templets/adenroll.htm');//载入模板$sql="select * from cms_enroll";$dl->SetSource($sql);//执行sql 不能与$dl->SetTemplate 颠倒$dl->Display();//显示页面}?>adenroll.html复制代码<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/D TD/xhtml1-transitional.dtd"><head><title>在线报名管理</title><link href='img/base.css' rel='stylesheet' type='text/css' /><style type="text/css">th,td{text-align:center;border:1px #D1DDAA solid;font-size:15px;}th{background:#E6F8B7;}table{margin-top:20px;}</style></head><body><table width="90%" border="0" cellpadding="0" cellspacing="0" align="center"> <tr><th>姓名</th><th>E-mail</th><th>状态</th><th>操作</th></tr><!-- 循环得到结果 -->{dede:datalist}<tr><td>{dede: /}</td><td>{dede:field.mail /}</td><td>{dede:if field.tag==0}未录取{else}<font color="red">已录取</font>{/dede:if}</td><td> <a href="adenroll.php?action=pass&id={dede:field.id /}">[录取]</a>|<a href="adenroll.php?action=nopass&id={dede:field.id /}">[不通过]</a>|<a href="adenroll.php?action=delete&id={dede:field.id /}">[删除]</a></td></tr>{/dede:datalist}</table><!-- 分页标签 --><p style="text-align:center;font-size:15px;">{dede:pagelist listitem="info,index,end,pre,next,pageno" lis tsize="5"/}</p></body></html>。

4、dede织梦CMS二次开发--程序篇

4、dede织梦CMS二次开发--程序篇

程序篇4.1、自定义模型使用教程在织梦系统中有内容模型这个概念,不同内容模型可以用来构建不同内容形式的站点,在系统中自带了以下几种模型:普通文章、图集、软件、商品、分类信息、专题。

通过系统自带的模型,我们可以用来构建不同类型的站点,例如:使用图集可以做一个图片站,用软件模型构建一个软件下载站点。

当然以上随系统附带的模型被称为系统模型,用户可以自己定义一些模型,比如图书、音乐专辑等,自定义了这些模型才可以构建更多内容形式的站点,本篇将讲述如何使用系统的自定义模型管理功能来实现内容模型的构建。

我们首先登录系统后台,点击[核心]-[内容模型管理],进入内容模型管理界面,如下图所示:这里我们介绍几个相关参数的概念:•ID号用于区分模型的唯一ID,一般常规模型的ID都是大于0的,比如普通文章、软件等,如果使用了单表模型,ID一般需要小于-1,例如这里的分类信息模型;•频道名称用于识别频道类型的标识;•识别id系统用于识别的id,这个关系到模板方面;•附加表系统内容附加表项;•模型类型分为系统类型和自动类型,系统类型为固化在系统中的内容模型,自动类型为用户可创建的内容模型类型;接下来我们开始介绍如何使用自定义模型管理来创建一个自己的模型,并且用于建设不同内容类型的网站中去。

这里我们介绍一些周边的内容,几个要用到的概念:•字段在数据库中,表的列称为字段,织梦系统也是如此,但更恰当的说法,存储某个内容信息单元,称为字段,例如标题、来源、作者等都是一个字段;•内容系统主表程序将一些公用字段存储在系统主表dede_archives,例如:标题、关键词、缩略图等,主表具体字段可以查询织梦帮助中心()的有关二次开发手册数据表部分的内容;•附加表不同内容模型对应不同的附加表,通常以dede_addon[识别ID]命名,附加表中存放的都是详细内容的相关字段(非公用),例如:文章内容(dede_addonarticle)、软件类型(dede_addonsoft)、图片集合(dede_addonimage)等;•单表独立模型存储时候不用到“主表+附加表”的结构形式,直接使用单个数据表进行存储内容数据,这样脱离主从表,减少主表数据服在开销,可以从很大程度上解决数据负载问题;明白了以上几个概念我们可以来学习如何来自己创建一个内容模型了。

基于开源内容管理系统DedeCMS模版技术的二次开发探究

基于开源内容管理系统DedeCMS模版技术的二次开发探究

基于开源内容管理系统DedeCMS模版技术的二次开发探究作者:易洋, 周燕飞来源:《电脑知识与技术》2009年第34期摘要:DedeCMS是2004年出现的一款CMS。

是一款完全开源的CMS系统。

DedeCMS是国内知名内容管理系统,经超过20万以上站长级用户群经过长达4年之久的广泛应用和复杂化环境的检测,在安全性、稳定性、易用性方面具有较高的声誉,倍受广大站长推崇。

该文主要是针对DedeCMS模板与标签的可扩展性进行研究,并对其模板做一定二次开发应用。

关键词:dedecms;模板;二次开发;开源中图分类号:TP311文献标识码:A文章编号:1009-3044(2009)34-9729-04Probe into the Secondary Development Based on the Open Source Content Management System YI Yang, ZHOU Yan-fei(Nanjing University of Aeronautics and Astronautics, Nanjing 210001, China)Abstract: DedeCMS is a kind of CMS, which appeared in 2004, and is a completing open source CMS systems. DedeCMS is the well-known content management system in china, expericing more than 2000 user group above-level owers and extensive using and complexity environmental testing for more than four years, which has a highier reputation in security,stability,ease of use,and is respected by the general owners. This article is aimed to study DedeCMS templetes and the scalability of the labels, to develop and applicate the secondary template.Key words: dedecms; template; secondary development; open sourceCMS大概2004以前,若要进行网站内容管理基本上都是靠手工维护。

dedecms开发笔记

dedecms开发笔记

dedecms二次开发总结1.后台所有目录在upload/dede2.后台大标题修改在upload/dede/inc/inc_menu.php3控制器有三个,例如ad_add.php ad_main.php ad_edit.php4.模板放在templets下面,名字跟模块名字相同,格式为htm5.在数据库中增加数据,直接写sql语句$query = "INSERT INTO #@__ad(ad_code,ap_code,ad_name,weight,ck_flg,lang_id,show_flg, position,dis_id,ad_info,ad_pic,bg_colour,font_colour,width,hei ght,ps_id,link_url)VALUES('$ad_code','$ap_code','$ad_name','$weight','$ck_flg','$ lang_id','$show_flg','$position','$dis_id','$ad_info','$ad_pic',' $bg_colour','$font_colour','$width','$height','$ps_id','$link_url ');";$dsql->ExecuteNoneQuery($query);ShowMsg("成功增加一个广告!","ad_main.php");exit();6.也可以放入一个数组中,然后处理$dsql->Execute('dd','SELECT * FROM `#@__myadtype` ORDER BY id DESC');$option = '';while($arr = $dsql->GetArray('dd')){$option .= "<option value='{$arr['id']}'>{$arr['typename']}</option>\n\r";}7.模板分配$dlist = new DataListCP();$dlist->SetTemplet(DEDEADMIN."/templets/ad_main.htm");$dlist->SetSource($sql);$dlist->display();8.模板输出{dede:datalist}<td>{dede:field.weight /}</td><td>{dede:ng_id function='lang(@me)'/}</td>{/dede:datalist}9.模板输出可以使用函数改变输出值,function='lang(@me)'.函数在模块中定义.10.用旧数据插入随即排练插入多条数据INSERT INTO t_device(`DV_CODE`,`LANG_ID`,`PT_ID`)SELECTDV_CODE, LANG_ID, PT_IDFROM t_adver_ap11.添加全选按钮,进行删除等操作,删除只能是删除本页全选的数据<a href="javascript:selAll()"class="coolbg">全选</a><a href="javascript:noSelAll()"class="coolbg">取消</a><a href="javascript:checkArc(0)"class="coolbg">&nbsp;审核&nbsp;</a><a href="javascript:showArc(0)"class="coolbg">&nbsp;显示&nbsp;</a><a href="javascript:delArc(0)"class="coolbg">&nbsp;删除&nbsp;</a>js代码function selAll(){for(i=0;i<document.form2.arcID.length;i++){if(!document.form2.arcID[i].checked){document.form2.arcID[i].checked=true;}}}function noSelAll(){for(i=0;i<document.form2.arcID.length;i++){if(document.form2.arcID[i].checked){document.form2.arcID[i].checked=false;}}}//获得选中文件的文件名function getCheckboxItem(){var allSel="";if(document.form2.arcID.value) return document.form2.arcID.value;for(i=0;i<document.form2.arcID.length;i++){if(document.form2.arcID[i].checked){if(allSel=="")allSel=document.form2.arcID[i].value;elseallSel=allSel+"`"+document.form2.arcID[i].value;}}return allSel;}//获得选中其中一个的idfunction getOneItem(){var allSel="";if(document.form2.arcID.value) return document.form2.arcID.value;for(i=0;i<document.form2.arcID.length;i++){if(document.form2.arcID[i].checked){allSel = document.form2.arcID[i].value;break;}}return allSel;}function checkArc(ad_id){var qstr=getCheckboxItem();//if(aid==0) aid = getOneItem();location="ad_edit.php?qstr="+qstr+"&dopost=check";}function showArc(ad_id){var qstr=getCheckboxItem();//if(aid==0) aid = getOneItem();location="ad_edit.php?qstr="+qstr+"&dopost=show";}function delArc(ad_id){var qstr=getCheckboxItem();//if(ad_id==0) ad_id = getOneItem();location="ad_edit.php?qstr="+qstr+"&dopost=delete";}编辑模块代码if($dopost=='delete'){$qstrs = explode("`",$qstr);//print_r($qstrs);if( !empty($ad_id) && empty($qstr) ){$dsql->ExecuteNoneQuery("DELETE FROM `#@__ad` WHERE ad_id='$ad_id' ");ShowMsg("成功删除一则广告代码!",$ENV_GOBACK_URL);exit();}if($qstr==''){ShowMsg("请至少选择一个!",$ENV_GOBACK_URL);exit();}foreach($qstrs as $ad_id){$dsql->ExecuteNoneQuery("DELETE FROM `#@__ad` WHERE ad_id = '$ad_id' ");};ShowMsg("成功删除广告!",$ENV_GOBACK_URL);exit;}总结:写一个函数,获取全选的id值,然后各种按钮对应的操作以及传过去的值,这也写在一个js中,例如本例中delarc();然后在模块中根据各种情况进行操作,例如判断是从单个点击过来的,还是通过全选过来的.12.对于让select 选择后保持状态的问题最恨的招数就是把参数定死,然后在页面的对应选择框中加入如下代码<?php if ($_GET['ck_flg']==0) echo 'selected'; ?>这种情况用于进行搜索时候,默认值在数据库中没有值,但是你在一开始需要把所有结果都显示出来,(如果不加参数,会出现默认值为未审核,未审核的值为0)13.用以前模块改写时.容易出现问题,(我把广告管理改为应用管理),在插入数据库中时,始终改变不了类别,纠结了一晚上,原来是sql语句在修改时带上逗号或是丢了逗号,每回都那么巧,都有错,一定要细心.灵异事件发生,就要细心,细心,再细心!!!!14.如何在预览图片然后返回,一个办法是写链接时候target="_blank";另外一种办法就是先写个div,加载时候隐藏,然后用js控制,当点击原图片的时候,显示div,把这个div层的图片换掉,当再次点击,div又隐藏.控制层(定义一个函数)function MediaType($nurl){return "图片<a href=\"javascript:;\" onClick=\"ChangeImage('$nurl');\"><imgsrc='../include/dialog/img/picviewnone.gif' name='picview' border='0' alt='预览'></a>";}view层<style>.napisdiv{right:100px;top:200px;width:150px;height:100px;position:absolute ;z-index:3}</style><script>function ChangeImage(surl){document.getElementById("floater").style.display="block";document.getElementById('picview').src = surl; }function ChangeImages(surl){document.getElementById("floater").style.display="none";document.getElementById('picview').src = surl; }window.onload=hidediv;function hidediv(){document.getElementById("floater").style.display="none";}</script><div id="floater"class="napisdiv"><a href="javascript:;" onClick="ChangeImages('../include/dialog/img/picviewnone.gif');"> <img src='../include/dialog/img/picviewnone.gif'id='picview' name='picview'border='0'alt='单击关闭预览'style='z-index:10000'> </a></div><td>{dede:field.mediatype function="MediaType(@me)"/}</td>15.当数据库插不入数据的时候,检查两个方面,一个是sql语句是否错误,另一个是字段是否为非空.。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
功能:分类信息图片调用 代码: {dede:arclistsg row=1 titlelen=30 flag=c,a infolen=80 orderby=pubdate channelid=-8 typeid=6 imgwidth=105 imgheight=137} <a href="[field:arcurl/]">[field:image/]</a><br/><a href="[field:arcurl/]" >[field:title /]</a>{/dede:arclistsg}
[quote] {dede:sql sql="SELECT mid,mtype,userid,uname,matt,face FROM dede_member where matt = 1 and mtype='个人' LIMIT 0 , 10"} 头像:<img src="[field:face runphp='yes'] if(!@me)@me = '/attachment/upload/87/11787.gif';
管理登录界面,输入密码后进入 dedecms 后台管理。 dedecms 后台管理界面的左侧导航栏,点击“模块”标签,注意下面的
“UCenter 模块”。 点击“UCenter 配置”,进入以下页面。
“服务端地址“填:http://localhost/ucenter (本地机),创始人密码 即是你在安装 UCenter 时设定的创始人密码;服务端 IP 地址填你的 Ucenter 安 装的空间 IP(本地机填 127.0.0.1),输入后点“确认安装”。出现安装成功提 示。
功能:推荐图书调用
代码: {dede:booklist row=5 booktype=0 titlelen=10 imgwidth=80 imgheight=100 orderby=commend}[field:imglink /]{/dede:booklist}
分类信息
功能:调用地区与类型
代码: {dede:infolink} <b>地区:</b>[field:nativeplace /]<br /> <b>类型:</b>[field:infotype /] {/dede:infolink}
[/field:face] 为用户头像图片 [img]/attachment/upload/87/11787.gif[/img]
-1-
织梦模板网( www.ded )整理发布
是如果用户头像为空的话要显示的图像 这个大家自己改吧 [/quote]
退出 dedecms 管理后台,再次进入 UCenter 用户管理中心,这时我们会发 现在“应用管理”中多了一项“我的网站”,并且显示的是“通信成功”了。
我们再通过浏览器访问 http://localhost/uchome/index.php, 用管理 员的账号进入 Uchome 首页,点击“设置”进入另外一页,再点击右上角的“高 级管理”,输入密码后点击“进入平台”进入高级管理平台。
<td align="left" width="30"></td> <td width="300" align="left">[field:cataloglink/] [field:booklink/]</td> <td width="318" align="left">[field:contentlink/]</td> <td width="40" align="right">[field:lastpost function="GetDateMk(@me)"/]</td> </tr> {/dede:bookcontentlist} </table>
功能:最新连载内容调用,含栏目名称、书名、章节名、发布时间。
代码: <table width="688" border="0" cellpadding="0" cellspacing="0"> {dede:bookcontentlist row=10 booktype=0 orderby=lastpost author= keyword=} <tr>
在左侧导航栏的“高级设置”中找到一项“UCenter 应用”点击进入。 在这里我们可以看到我们加入的三个应用,分别点击三个应用下面的“提 交更新“。退出管理界面,现在我们再回过头去测试一下看就可以同步了。 七、经验总结及疑问 如果没有做到 Dedecms、UChome、Discuz!中同时登录及退出的问题其关 键就是在 uchome 中的“ucenter 应用”中没有“提交更新”。 有时候安装 dedecms、uchome 或 ucenter 出现问题安装不了或出错等等, 有的很多就是环境没有搭载好,所以我建议就安装 dedecms 提供的 DedeAMPZForServer 套件,至少在服务器的搭载上我们不需要花费太多的精力。 另外注意的是 UCenter 的配置。比如“通信密钥”是否一致。这个一般是 导致 UCenter 与 Dedecms、UChome、Discuz!等通信失败的主要原因之一。这个 密钥是可以自己随便写的,但要保证 UCenter 与 DIscuz 的密钥一致。又比如
功能:调用最新信息
代码:{dede:arclistsg row=10 titlelen=32 orderby=pubdate channelid=-8 idlist=} [[field:typelink/]] [field:textlink/][field:pubdate function="MyDate(m-d,@me)"/] {/dede:arclistsg}
-2-
织梦模板网( www.ded )整理发布
“ID”。查看 UCenter 后台的应用 ID 是否与 Dedecms、UChome、Discuz!等后 台的 ID 一致,如不一致,请修改各个应用后台的"UCenter 应用 ID"。这个也 是导致 UCenter 与 DIscuz 通信失败的主要原因之一。关于 UCenter 的配置等 这一点可以参考 UCenter 官方提供的说明手册。
-1-
调用 说明: 推荐会 员(带 用户头 像)..................................................................................................... 分类 信息.......................................................................................................................................................... 圈子 模块.......................................................................................................................................................... 下载 模块.......................................................................................................................................................... DEDE 主要目录结构及数据表结构.............................................................................................活运用...............................................................................................................
[/field:face]" />
用户名:
<a
href='[field:global
name='cfg_cmspath'/]/member/?[field:userid/]/'>[field:uname/]</a>
{/dede:sql}
[field:face runphp='yes'] if(!@me)@me = '/image/post/smile/default/14.gif';
织梦模板网( www.ded )整理发布
Dede 二次开发程序详解
目录:
DEDE 二次开发程序详解...............................................................................................................................
功能:图书封面图片调用,含标题
代码: <table border="0" width="100%" cellspacing="0" cellpadding="0"> <tr> {dede:sql sql="Select id,bookname,author,pubdate,body,litpic From dede_story_books order by id desc limit 0,10"} <td><a href="/book/[field:id function=DedeID2Dir(@me)/]/[field:bookname function=GetPinyin(@me)/]-[field:id/].html"><img src="[field:litpic/]" border="0" width="75" height="100" /></a><br /><a href="/book/[field:id function=DedeID2Dir(@me)/]/[field:bookname function=GetPinyin(@me)/]-[field:id/].html">[field:bookname function="cn_substr(@me,12)"/]</a> </td> {/dede:sql} </tr> </table>
相关文档
最新文档