dede二次开发实例.doc_第1页
dede二次开发实例.doc_第2页
dede二次开发实例.doc_第3页
dede二次开发实例.doc_第4页
dede二次开发实例.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

织梦DedeCms二次开发实例织梦|DedeCms系统关联到新浪微博教程最近注册了新浪微博,发现特别有意思,发现里面有一个工具可以关键到站外的博客站点,这样每当有更新,微博就会自动更新啦。 于是把自己用织梦做的站网址写进去,解决提示:无法关联,然后用填了一个用wp做的站,提示关联成功!通过对比得知,新浪微博是利用feed找到更新文章的。只要给他指定feed地址就可以成功关联啦。 现在开始动手简单修改一下织梦的模板,由于织梦不能生成全站的xml文件,所以要先建立生成全站XML的php程序。1,建立feed.php SetTemplet($cfg_basedir . $cfg_templets_dir . /wodede_com/feed.htm); header(Content-type:application/xml); $pv-Display(); ?以上要注意的是修改模板的路径,确保在模板跟目录能够找到feed.htm2,建立feed.htm模板文件 dede:global.cfg_webname/ dede:global.cfg_basehost/ dede:global.cfg_description/ zh-cn dede:global.cfg_webname/ dede:global.cfg_adminemail/ dede:arclist row=60 col=1 titlelen=100 orderby=pubdate field:arcurl/ field:writer/ field:typename/ field:pubdate function=strftime(%a, %d %b %Y %H:%M:%S +0800,me)/ field:arcurl/ /dede:arclist 需要注意的是,别忘了把我的网址改成你自己需要的。3,修改index.htm主页模板 由于新浪微博只能验证网址,不能写完整路径, 比如我写的是:/feed.php。结果提示关联失败,解决的办法是,在和中间加入下面的代码 通过以上方法就可以成功关联新浪微博了。 织梦二次开发DEDECMS5.7网站软件模块增加插入图片功能第一步:在include/ckeditor文件夹中有一个fck的配置文件ckeditor.inc.php文件,打开后看到里面有4种配置,软件介绍那个是调用的Small的配置,那么只要我们修改一下这个配置就可以了如下: 原配置为: $toolbarSmall = array( array( Source,-,Templates), array( Cut,Copy,Paste,PasteText,PasteFromWord,-,Print), array( Undo,Redo,-,Find,Replace,-,SelectAll,RemoveFormat),array( Bold,Italic,Underline,Strike,-), array( Table,HorizontalRule), array( Link,Unlink,Anchor),/, array( Styles,Format,Font,FontSize), array( TextColor, BGColor) ); 可以在里面加上添加图片按钮的配置“image” 在上面加上“array(Image),”即可,修改后如下: $toolbarSmall = array( array( Source,-,Templates), array(Cut,Copy,Paste,PasteText,PasteFromWord,-,Print), array( Undo,Redo,-,Find,Replace,-,SelectAll,RemoveFormat), array( Bold,Italic,Underline,Strike,-), array(Image),array( Table,HorizontalRule), array( Link,Unlink,Anchor),/, array( Styles,Format,Font,FontSize), array( TextColor, BGColor) );或者加在你想要的任意位置都可以,如果想要添加其他的按钮,方法类似不再重复叙述织梦DedeCMS二次开发注意事项:header()前输出字符导致header()跳最近为了开发一个项目,不得不再去重温php了,今天把一个在二次开发中的注意事项和大家分享一下,这个是在论坛找到资料,结果我在开发的也同样遇到这个问题,为了大家不重蹈覆辙了,今天写个注意事项和大家一起分享: 织梦二次开发 首先要排查的是语法错误(如果当php.ini里设置是不显示任何错误的话,语法错也会导致一片空白),这个文件是dede/catalog_do.php(怎么知道是这个文件呢,很简单,在那个一片空白的页面上,点右键,看属性,就有地址URL和传递的参数),我把一行die(aa); 放在了代码第一行,这个做法就可以测试有无语法,因为语法错不单可以发生在catalog_do.php文件本身,还可以发生在catalog_do.php文件所引用的文件里(包括这些文件里再引用的任何一级文件里),所以如果这个第一行die(aa); 也不能执行,就必然是语法错。因为能输出aa,也就是说语法没有错,就必定是某种程序上的逻辑错。 然后进一步寻找逻辑错误发生的文件,这就需要跟踪代码的所执行到的地方,由于没有任何提示,也还是利用die(aa); 把这一行往下挪到catalog_do.php文件的include、require等语句之后,如果不能执行,说明在include、require所引用的文件里,代码执行就停止了,反之说明那些文件执行是正常的。 这一步,依然能显示aa,说明错误是发生在catalog_do.php文件里(如果是发生在其他所引用的文件里,就用此法打开那些文件去如是调试) 然后再此文件里一步步寻找发生错误的具体代码段,首先要看链接此文件时候的参数(在那个一片空白的页面上,点右键,看属性,就有地址URL和传递的参数),而点击“内容”时链接此文件的URL为catalog_do.php?cid=3&dopost=listArchives(它的意思,我们可以猜测它cid是栏目ID,而最重要的是dopost=listArchives这个参数,因为我们在catalog_do.php文件里,可以看到接下来的代码,就是一连串的if (dopost=.) else if(dopost=.) else.的判断,它就是让程序运行,根据过来的dopost=参数的不同,进入不同的处理). 好,我们就直接找到if (dopost=listArchives) 这里,把die(aa); 放到紧接着它的第一行,看看还能否输出aa,如果可以输出,说明程序正确进入了目标程序段,否则就说明dopost=listArchives这个判断没有达到预期的效果(如果是这个情况,你就要好好对照刚才的URL和这个dopost=listArchives,有没有写错参数名、大小写有没有弄错了,还有就是dopost值有没有在前面就被改变了,最常见的错就是类似写成了dopost=listarchives,或者在前头某个判断里写成了dopost=.),好,依然能输出aa,说明程序也进来这里了。 然后继续寻找发生错误的代码行,继续挪动die(aa); 的玉步,每次挪动完,刷新那个空白页面,看看能否输出aa(这里有技巧,想快,就不要逐行挪动,而是利用折半查找,或者在关键代码前后插入,这个就需要比较强的代码阅读能力和一定的编程经验了,不展开了). 最后,我发现在header(location:$gurl?channelid=$channelid&cid=$cid); 这一行之前能输出aa,这一行之后也能输出aa,而我是很清楚,这一行本该跳转到某个指定的页面上的,后面不应该输出aa,同时我也知道造成这个问题,通常是因为程序执行在之前就输出过字符(如果你不清楚,就查google或手册)! 接下来的工作,就是找哪个文件有这个输出了,天啊,这太难找了! 于是我换了另外一个做法“修改排查法”,我在本地把我那些修改的代码,也换上去,发现没有出现这样的问题,也就是说,我写的文件没有问题。 然后我把客户所有文件,都列出来,按修改时间排序,并询问了客户最后可以正常使用这个功能的时间,发现了一堆在此时间之后修改的php文件,除去我修改的那些文件,就剩下两个文件了,其中一个是include/extend.func.php文件. 我很清楚这个文件是一个dede提供给客户做函数扩展的文件,它被common.func.php所引用,而common.func.php又是被全站所有文件所引用的文件! 于是我打开这个文件,赫然在最后?之后,有两个空格一个空行! 内容来自织梦二次开发 把这些空格空行删除,至此功能就全部正常了(包括我在模块表里自定义了一个模块链接,它在这个错误的情况下,不能显示在模块列表里,现在也正常了)! 以上文字,对于初级PHPer,可以学习领会一点点PHP调试技术; 对于PHP已经比较熟的,而对DEDE还有有点陌生的, 这里提供的一条经验就是:修改dede模板的所有PHP文件,千万不要在头尾两行的 之外,写入任何字符,包括空格和空行!织梦模板制作dedecms模板网站memberlist标签调用自定义会员信息织梦模板利用memberlist标签调用自定义会员模型的会员信息,这个问题找了很久,官方论坛提问过,百度搜索过直接今天才找到如何解决。 其实这个也属于织梦二次开发的范畴. 不同的会员模型,是通过表:_member中的 mtype 字段来区分的,操作步骤如下: 打开 includetaglibmemberlist.lib.php,如下操作: 找到以下这句代码: $attlist=row|6,iscommend|0,orderby|logintime,signlen|50; DEDECMS模板 修改为: $attlist=row|6,iscommend|0,orderby|logintime,signlen|50,type; 找到以下这句代码: if($iscommend 0) $wheresql .= AND mb.matt=$iscommend ; 在下面增加: if($type != ) $wheresql .= And mb.mtype=$type; copyright 以上操作也可以通过网站后台直接修改,步骤:后台模板模板管理标签源码管理 找到:memberlist.lib.php,点击后面的编辑进行修改。 标签调用的时候用:type=会员模型名称,调用。示例: DEDE模板 dede:memberlist type=企业 row=8 signlen=18 field:uname/ /dede:memberlist织梦DedeCMS网站的图集模块增加图片下载功能我们需要找到这个文件 /templets/default/images/photo/heiphoto.js 使用DW打开记事本也可以, 查找 if(sina.isIE) 在 if(sina.isIE) this.ImgObj1.src = /dy/deco/2008/0331/yocc080331img/news_mj_005.gif; this.ImgObj1.filters0.Apply(); this.ImgObj1.src = this.filmstripsnum.src; this.ImgObj1.filters0.Play(); else this.ImgObj1.src = this.filmstripsnum.src; for(i = 0;i = 3;i +) this._timeOuti = setTimeout(epidiascope.ImgObj1.style.opacity = + i * 0.3,i * 100); ; this._timeOuti = setTimeout(epidiascope.ImgObj1.style.opacity = 1;,4 * 100); ; 内容来自织梦模板制作下面增加一行 document.all.imgsrcs.href=(this.ImgObj1.src);然后在图片内容页找个合适的放方增加一行 右键另存为下载然后再重新生成一次所有页面,页面就会出现右键另存为下载了。 内容来自织梦模板制作这个下载功能对一些做图片集的 dedecms模板还是比较实用的。dedecms5.7织梦二次开发添加栏目缩略图其实这是一个很重要的功能,在dedecms模板中通常也会遇动这样的设置 比如我们一个栏目列表都用缩略图来表示产,而不仅仅只是文字,如果没有这项功能会非常麻烦,网上有很多这方面的资料,但是都试过了有很多问题,自己研究一下,测试基本通过。新加字段 typeimg 织梦模板制作提醒您.记得先备份. 后台执行SQL: alter table dede_arctype add typeimg char(100) NOT NULL default ”;涉及到文件:dede/catalog_add.php dede/catalog_edit.php dede/templets/catalog_add.htm dede/templets/catalog_edit.htm打开dede/catalog_add.php 查找$queryTemplate = “insert into dede_arctype将(reid,topid,sortrank,typename,typedir,替换为(reid,topid,sortrank,typename,typedir,typeimg,将(reid,topid,rank,typename,typedir,替换为(reid,topid,rank,typename,typedir,typeimg,打开dede/catalog_edit.php 查找$upquery = “Update dede_arctype set在其下面新加一行 typeimg=$typeimg,打开dede/templets/catalog_add.htm 查找 列表命名规则: 在其下面增加以下内容 栏目图片: 并在文件的head增加以下内容 打开dede/templets/catalog_edit.htm 在刚前面的位置加入: 栏目图片: input name=”typeimg” type=”text” style=”width:250px” id=”typeimg” value=” / 说明:下面这句会调用出已添加的路片路径。 并在文件的head增加以下内容 我试了一下在模版里用:dede:field.typeimg / 是调不出数据的,所以我改成了SQL调用。 原来是这样的: dede:channel type=top row=13 field:typeimg/ /dede:channel 在这里面加上field:typeimg 是调不出来的,我个人认为栏目缩略图就是通过循环出来的,而循环不出来则意义不大,所以改成了如下: dede:sql sql=”SELECT typename,typedir,typeimg FROM dede_arctype” field:typeimg/ /dede:sql这样就顺利的调出来了,当然如果你要调用子ID的话,只要加上相应的条件ID调用就可以了。DEDECMS5.7织梦二次开发在channel标签中增加limit有时候我们想取得一个区间的栏目,比如limit 5,3 就是从第五个栏目开始,取得三个,模板标签:dede:channel type=top currentstyle=typename limit=7,7 field:typename/ /dede:channel但是includetaglib中的channel.lib.php标签解析不支持limit。那么我们自己动手扩展吧。以下是具体做法:首先,打开includetaglib中的channel.lib.php,在$line = empty($row) ? 100 : $row;在它的下面加上下面代码: $line = empty($row) ? 100 : $row; /limit条件 $limit = trim(eregi_replace(limit,$limit); if($limit!=) $limitsql = limit $limit ; else $limitsql = limit 0,$line ; 然后在下面if($type=top) $sql = SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath From dede_arctype WHERE reid=0 And ishidden1 order by sortrank asc limit $limit ; else if($type=son) if($typeid=0) return ; $sql = SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath From dede_arctype WHERE reid=$typeid And ishidden1 order by sortrank asc limit 0, $line ; else if($type=self) if($reid=0) return ; $sql = SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath FROM dede_arctype WHERE reid=$reid And ishidden1 order by sortrank asc limit 0, $line ; 改成 if($type=top) $sql = SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath From dede_arctype WHERE reid=0 And ishidden1 order by sortrank asc limit $limit ; else if($type=son) if($typeid=0) return ; $sql = SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath From dede_arctype WHERE reid=$typeid And ishidden1 order by sortrank asc limit 0, $limit; else if($type=self) if($reid=0) return ; $sql = SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath FROM dede_arctype WHERE reid=$reid And ishidden1 order by sortrank asc limit 0, $limit; dedecms织梦定时更新生成首页方法1、将以下内容另存为renew_homepage.php,放入plus目录夹中?php /* 在模板头部放上下面代码 */ function sp_input( $text ) $text = trim( $text ); $text = htmlspecialchars( $text ); if ( !get_magic_quotes_gpc() ) return addslashes( $text ); else return $text; $autotime = 5;/自动更新时间,单位为秒$fpath = ./data/last_time.inc;/记录更新时间文件 include( $fpath );if( empty($last_time) ) $last_time = 0;if( sp_input($_GETrenew)=now ) $last_time = 0;if( (time()-$last_time)=$autotime ) define(DEDEADMIN, ereg_replace(/1,/,dirname(_FILE_) ) ); require_once(DEDEADMIN././include/common.inc.php); require_once(DEDEINC./arc.partview.class.php); /* $row = $dsql-GetOne(Select * From 80php_homepageset); $dsql-Close(); $templet=$rowtemplet; $position=$rowposition; */ $templet = default/index.htm; $position = ./index.html; $homeFile = dirname(_FILE_)./.$position; $homeFile = str_replace( , /, $homeFile ); $homeFile = str_replace( /, /, $homeFile ); $pv = new PartView(); $pv - SetTemplet( $cfg_basedir.$cfg_templets_dir./.$templet ); $pv - SaveToHtml( $homeFile ); $pv - Close(); $file = fopen( $fpath, w ); fwrite( $file, ); fclose( $file ); ?2、织梦模板制作在需要自动生成的模板中添加:如:templetesdefaultindex.htm, 在之间添加以下代码: 3、代码说明:代码$autotime = 300;/自动更新时间,单位为秒,可设置为您想它自动更新的频率 $fpath = ./data/last_time.inc;/记录更新时间文件,这里的路径是网站根目录datalast_time.inc,last_time.inc文件自动生成,不过需要data目录可写4、使用方法:放入模板中只需要后台更新一次,以后每访问这个页面模板时就会按照代码设置的autotime时间生成页面。dedecms织梦二次开发模版标签制作教程1、首先在include/taglib文件夹中创建标签解析文件,如创建文件pricerange.lib.php,增加以下代码dede 获取价格区间代码 dede:pricerange typeid=/ typeid:调用范围,0为全部价格区间 dede*/ require_once(DEDEINC./taglib/mytag.lib.php);function lib_pricerange(&$ctag, &$refObj) global $dsql, $envs, $cfg_cmsurl; /属性处理 $attlist=row|6,titlelen|0,tid|0,typeid|0,keywords|; FillAttsDefault($ctag-CAttribute-Items,$attlist); extract($ctag-CAttribute-Items, EXTR_SKIP); /只在指定栏目显示 if($tid0 & $tid!= $envstypeid) return 没安价格分类模块; $innertext= $ctag-GetInnerText(); /todo pricerangetype.htm if(trim($innertext)=) $innertext= GetSysTemplets(pricerangetype.htm); /todo 智能条件 $ctp= new DedeTagParse(); $ctp-SetNameSpace(field, , ); $ret= ; $keywords_arr = explode(,$keywords); /$keywords2 = $keywords_arr1= ? : OR arctype.seotitle LIKE %$keywords_arr1% ; $keywords_where = empty($keywords_arr1) ? AND arctype.seotitle LIKE %$keywords_arr0% : AND ( arctype.seotitle LIKE %$keywords_arr0% OR arctype.seotitle LIKE %$keywords_arr1%); $query= SELECT price.arctypename ,price.arctypeurl, FROM 80php_pricerange price LEFT JOIN 80php_arctype arctype ON price.arctypeid=arctype.id LEFT JOIN 80php_pricesorttype sort ON price.typeid=sort.typeid WHERE sort.typeid =. $typeid . $keywords_where. ORDER BY price.sortrank LIMIT . $row; /echo $query.; $dsql-Execute(me,$query); while($rs= $dsql-GetArray(me) $rstitle = 0 = $titlelen?$rstitle:cn_substr($rstitle, $titlelen); $rsarctypeurl = str_replace(cmspath,$GLOBALScfg_cmspath,$rsarctypeurl ); $ctp-LoadSource($innertext); foreach($ctp-CTags as$tagid=$ctag) if(!empty($rsstrtolower($ctag-GetName() $ctp-Assign($tagid,$rs$ctag-GetName(); $ret.= $ctp-GetResult(); return $ret; 2、模板中调用: dede:pricerange row=5 keywords=微型,小型 typeid=1 field:arctypename/ /dede:pricerange3、显示结果长安悦翔三厢 英伦汽车SC5-RV 江淮悦悦 长城哈弗M1 上汽通用五菱荣光如图:给DEDECMS织梦关键词加链接,可以指定关键词下面教您制作一个关键词内链功能,对于这个功能,dedecms 官方论坛也有很多插件。但不如手动制作有乐趣1.添加添加新变量首先进入网站后台-系统设置-系统基本参数-系统基本参数-添加新变量 变量名称:“key_union”变量类型:选择“多行文本”参数说明:“内容内链设置如下:“需要被内链的内容”|“内链的连接”多个请用“,”隔开”。所属组:建议选择“其他选项”(方便管理)。2.设置内链关键字和链接完成第一步进入“其它选项”按格式填写您的关键词和链接3.修改网站程序找到网站后台根目录的“article_add.$body = AnalyseHtmlBody($body, $description, $litpic, $keywords, htmltext);” 在这段代码之前加上关键词处理/关键词内链处理$key_union = $dsql-GetOne( Select * FROM 80php_sysconfig WHERE varname=key_union);foreach(explode(,$key_unionvalue) as $value)$keys=explode(|,$value);$key_http=$keys0;$value_http=.$keys0.;$body=str_replace($key_http,$value_http,$body);好了,大功告成!发个文章测试一下吧。织梦DedeCMSV5.7 sp1文档关键词频率修改方法DedeCMSV5.7 sp1文档关键词频率修改方法打开dede/article_keywords_main.php,找到如下代码:/更新链接网址 if($rpurl!=$rpurlold) $query1 = “UPDATE dede_keywords SET rpurl=$rpurl WHERE aid=$aid “; $dsql-ExecuteNoneQuery($query1); 织梦二次开发DedeCMSV5.7 sp1文档关键词频率修改方法 修改为:/更新链接网址、频率 $rank = $rank_.$aid; if($rpurl!=$rpurlold) $query1 = “UPDATE dede_keywords SET rpurl=$rpurl,rank=$rank WHERE aid=$aid “; $dsql-ExecuteNoneQuery($query1); else $query1 = “UPDATE dede_keywords SET rank=$rank WHERE aid=$aid “; $dsql-ExecuteNoneQuery($query1); 保存后就可以在后台修改频率了。dedecms织梦二次开发中自定义表单时间字段调用dedecms织梦二次开发中自定义表单时间字段调用有的时候需要用到,给需要的人写个备注,呵呵.dedecms中自定义表单时间字段调用方法如下 在页面中加 函数date()就是获取当前时间,再到PHP中把值赋给SQL语句!织梦二次开发实现无觅智能相关文章服务我觉得无觅应该学习一下多说,学习一下360的为用户考虑问题. 多说的一键安装插件 很不错,赞一个. 下面的操作,请事先备份无觅智能相关文章服务是无觅网面向网站用户推出的一项智能云端服务,旨在提升网站相关文章的转化率,帮助读者发现网站的价值信息。 它依托无觅精准的内容分析和推荐算法,系统分析文章内容、标签、用户行为、时间等参数 实时生成关联推荐结果,并在当前文章底部进行图文展示,能够给网站带来快速的流量增长,也为用户提供流畅的阅读体验织梦二次开发。无觅相关文章默认展示样式:v:*behavior:url(#default#VML);o:*be

温馨提示

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

评论

0/150

提交评论