虽然rss是一个很古老的东西,但是对于搜索引擎来说,应该算法还是特别喜欢这种有rss的网站的,所以做优化弄一个也何尝不可。dede自带的有rss,但是样式和路径总觉得不好,样式就不说了,改很容易,路径的话,需要修改几个dede的文件来达到自定义dede的rss路径的作用,修改文件如下:dede/makehtml_map.phpinclude/arc.rssview.class.phpinclude/sitemap.class.php直接找到以上文件,搜索data进行对应的修改即可。顺便补充下,样式模板位置在:\templets\plus\rssmap.htm\templets\plus\sitemap.htm
给织梦添加复制文档的功能步骤如下:一、打开templets下的content_list.htm找到这一行:<ahref="javascript:;"onClick="moveArc(event,this,<?phpecho(empty($channelid)?0:$channelid);?>)"class="coolbg"> 移动 </a>在这一行的下方添加:<ahref="javascript:;"onClick="copyArc(event,this,<?phpecho(empty($channelid)?0:$channelid);?>);"class="coolbg"> 复制 </a>二、打开dede/js/list.js找到moveArc这个函数functionmoveArc(e,obj,cid){varqstr=getCheckboxItem();if(qstr==''){alert('必须选择一个或多个文档!');return;}LoadQuickDiv(e,'archives_do.php?dopost=moveArchives&qstr='+qstr+'&channelid='+cid+'&rnd='+Math.random(),'moveArchives','450px','180px');ChangeFullDiv('show');}然后在下方添加copyArc这个函数functioncopyArc(e,obj,cid){varqstr=getCheckboxItem();if(qstr==''){alert('必须选择一个或多个文档!');return;}LoadQuickDiv(e,'archives_do.php?dopost=copyArchives&qstr='+qstr+'&channelid='+cid+'&rnd='+Math.random(),'copyArchives','450px','180px');ChangeFullDiv('show');}三、打开dede/archives_do.php找到elseif($dopost=='moveArchives'){这句代码然后在这个大括弧结尾处也就是在433行左右添加如下代码:/*-----------------------------functioncopyArchives(){}------------------------------*/elseif($dopost=='copyArchives'){CheckPurview('sys_ArcBatch');if(empty($totype)){require_once(DEDEINC.'/typelink.class.php');if(!empty($aid)&&empty($qstr))$qstr=$aid;AjaxHead();$channelid=empty($channelid)?0:$channelid;$tl=newTypeLink($aid);$typeOptions=$tl->GetOptionArray(0,$admin_catalogs,$channelid);$typeOptions="<selectname='totype'style='width:90%'><optionvalue='0'>请选择复制到的位置...</option>\r\n$typeOptions</select>";//输出AJAX可移动窗体$divname='copyArchives';echo"<divclass='title'onmousemove=\"DropMoveHand('{$divname}',225);\"onmousedown=\"DropStartHand();\"onmouseup=\"DropStopHand();\">\r\n";echo"<divclass='titLeft'>复制文档</div>\r\n";echo"<divclass='titRight'><imgsrc='images/ico-close.gif'style='cursor:pointer;'onclick='HideObj(\"{$divname}\");ChangeFullDiv(\"hide\");'alt='关闭'title='关闭'/></div>\r\n";echo"</div>\r\n";echo"<formname='quickeditform'action='archives_do.php'method='post'>\r\n";echo"<inputtype='hidden'name='dopost'value='{$dopost}'/>\r\n";echo"<inputtype='hidden'name='qstr'value='{$qstr}'/>\r\n";echo"<tablewidth='100%'style='margin-top:6px;z-index:9000;'>\r\n";?><trheight='28'><tdwidth="80"class='bline'> 目标栏目:</td><tdclass='bline'><?phpecho$typeOptions;?></td></tr><trheight='32'><tdwidth="80"class='bline'> 文档ID:</td><tdclass='bline'><inputtype='text'name='tmpids'value="<?phpecho$qstr;?>"style='width:310px;overflow:hidden;'/><br/>复制到的目标栏目必须和选定的文档频道类型一致,否则程序会自动勿略不符合的文档。</td></tr><trheight='32'><tdcolspan='2'align='center'style='padding-top:12px'><inputname="imageField"type="image"src="images/button_ok.gif"width="60"height="22"class="np"border="0"style="cursor:pointer"/> <imgsrc="images/button_back.gif"width="60"height="22"border="0"onclick='HideObj("<?phpecho$divname;?>");ChangeFullDiv("hide");'style="cursor:pointer"/></td></td></tr></table></form><?php//AJAX窗体结束}else{$totype=preg_replace("#[^0-9]#",'',$totype);$typeInfos=$dsql->GetOne("SELECTtp.channeltype,tp.ispart,tp.channeltype,ch.maintable,ch.addtable,ch.issystemFROM`me_arctype`tpLEFTJOIN`me_channeltype`chonch.id=tp.channeltypeWHEREtp.id='$totype'");$idtype="id";if(!is_array($typeInfos)){ShowMsg('参数错误!','-1');exit();}if($typeInfos['ispart']!=0){ShowMsg('文档保存的栏目必须为最终列表栏目!','-1');exit();}if(empty($typeInfos['addtable'])){$typeInfos['maintable']='me_archives';}//增加单表模型判断if($typeInfos['issystem']==-1){$typeInfos['maintable']=$typeInfos['addtable'];$idtype="aid";}$arcids=preg_replace("#[^0-9,]#",'',preg_replace("#`#",',',$qstr));$arc='';$j=0;$okids=array();$dsql->SetQuery("SELECT{$idtype},typeidFROM`{$typeInfos['maintable']}`WHERE{$idtype}in($arcids)ANDchannel='{$typeInfos['channeltype']}'");$dsql->Execute();while($row=$dsql->GetArray()){if($row['typeid']!=$totype){$dsql->ExecuteNoneQuery("insertintome_arctiny(typeid,typeid2,arcrank,channel,senddate,sortrank,mid)selecttypeid,typeid2,arcrank,channel,senddate,sortrank,midfromme_arctinywhereid='{$row[$idtype]}'");$xid=$dsql->GetLastID();$dsql->ExecuteNoneQuery("insertinto`{$typeInfos['maintable']}`(id,typeid,typeid2,sortrank,flag,ismake,channel,arcrank,click,money,title,shorttitle,color,writer,source,litpic,pubdate,senddate,mid,keywords,lastpost,scores,goodpost,badpost,voteid,notpost,description,filename,dutyadmin,tackid,mtype,weight)selectcasewhenid>'0'then'$xid'else''end,casewhentypeid>'0'then'$totype'else''end,typeid2,sortrank,flag,ismake,channel,arcrank,click,money,title,shorttitle,color,writer,source,litpic,pubdate,senddate,mid,keywords,lastpost,scores,goodpost,badpost,voteid,notpost,description,filename,dutyadmin,tackid,mtype,weightfrom`{$typeInfos['maintable']}`WHEREid='{$row[$idtype]}'");$dsql->ExecuteNoneQuery("insertinto`{$typeInfos['addtable']}`(aid,typeid,body,redirecturl,templet,userip,bigpic)selectcasewhenaid>'0'then'$xid'else''end,$totype,body,redirecturl,templet,userip,bigpicfrom`{$typeInfos['addtable']}`WHEREaid='{$row[$idtype]}'");$okids[]=$row[$idtype];$j++;}}//更新HTMLforeach($okidsas$aid){$arc=newArchives($aid);$arc->MakeHtml();}ShowMsg("成功复制$j个文档!",$ENV_GOBACK_URL);exit();}}注意最后一个步骤的me_要换成自己的后缀转自:http://www.zgguan.com/zsfx/php/574.html
经过测试貌似{dede:php}标签中不能直接使用其他普通标签例如:{dede:field.title/},{dede:global.cfg_webname/}但是我们可以通过其他方式来实现相应的功能。{dede:php}print_r($refObj->Fields);{/dede:php}这样的输出可以得到当前页面相关联的一些变量,比如dede:field.title/}中的值也会在这个数组中显示,如果这里要得到标题则可以用$title=$refObj->Fields['title'];现在我们要在dede:php标签中使用全局配置的那些变量如何得到了,我目前是通过嵌套数据库标签得到的,如:{dede:php}$row=$dsql->GetOne("selectvaluefromhnx_sysconfigwherevarname='cfg_webname');print_r($row[value]);{/dede:php}这样就可以得到全局配置的变量里面的值了
dedecms5.7交叉栏目可能有点问题,不能使用,以下操作试试:修改相关文件,实现交叉栏目修改的文件:include/taglib/arclist.lib.php第267行:if($ctag->GetAtt('cross')=='1')改成if($ctag->GetAtt('cross')!='0')第282行:if($arr['crossid']!='')$selquery="SELECTid,topidFROM`dede_arctype`WHEREidIN('{$arr['crossid']}')ANDid<>'{$typeid}'ANDtopid<>'{$typeid}'";改成if($arr['crossid']!='')$selquery="SELECTid,topidFROM`dede_arctype`WHEREidIN({$arr['crossid']})ANDid<>'{$typeid}'ANDtopid<>'{$typeid}'";后台在后台栏目里面设置好要交叉,生成相关的栏目列表,这时我们就能看到我们想要的效果了,灵活的运用交叉栏目能够很好的帮助我们实现我们想要的特效。
dede默认的分页是2个不同的url,如下:www.hack001.com/lm/index.htmlwww.hack001.com/lm/list_1.html从seo角度考虑,不是很好(其实也无所谓啦),现在需要把这2个一样的url都搞成index.html,以免网站逼格不够,修改方法如下:1,找到\include\arc.listview.class.php这个文件,将$typedir=ereg_replace('{cmspath}',$GLOBALS['cfg_cmspath'],$this->Fields['typedir']);这段代码添加到"//获得上一页和主页的链接"前面;2,找到下面几行代码(就在"//获得上一页和主页的链接"下面)if($this->PageNo!=1){$prepage.="<li><ahref='".str_replace("{page}",$prepagenum,$tnamerule)."'>上一页</a></li>\r\n";$indexpage="<li><ahref='".str_replace("{page}",1,$tnamerule)."'>首页</a></li>\r\n";}改成:if($this->PageNo!=1){if($prepagenum==1){$prepage.="<li><ahref=\"".$typedir."/\">上一页</a></li>\r\n";}else{$prepage.="<li><ahref=\"".str_replace("{page}",$prepagenum,$tnamerule)."\">上一页</a></li>\r\n";}$indexpage="<li><ahref=\"".$typedir."/\">首页</a></li>\r\n";}3.找到$listdd.="<li><ahref='".str_replace("{page}",$j,$tnamerule)."'>".$j."</a></li>\r\n";改成:if($j==1){$listdd.="<li><ahref=\"".$typedir."/\">".$j."</a></li>\r\n";}else{$listdd.="<li><ahref=\"".str_replace("{page}",$j,$tnamerule)."\">".$j."</a></li>\r\n";}分页url问题解决。
dede自定义表单加入验证码网上的方法很多,但是我试了试大多都是不行的,很误导使用者。如:http://jingyan.baidu.com/article/d169e1868b700f436611d886.htmlhttp://hi.baidu.com/wmkill/item/def3b24cc494e106896d10e1这样的版本其实是不行的,应该是适合老版本,反正现在5.7最后更新4月份的dede版本是不行的。王健已经把正确方法简化,方法如下:1.改:/plus/diy.php这个文件在头部引入文件:require_once(DEDEINC.'/membermodel.cls.php');然后找到elseif($do==2){在这个地方加入代码块//验证码验证$svali=GetCkVdValue();if(preg_match("/1/",$safe_gdopen)){if(strtolower($vdcode)!=$svali||$svali==''){ResetVdValue();ShowMsg('验证码错误!','-1');exit();}}2.改表单提交模板文件加上:<inputtype="text"class="intxtw200"style="width:50px;text-transform:uppercase;"id="vdcode"name="vdcode"class="code"/><imgid="vdimgck"align="absmiddle"onclick="this.src=this.src+'?'"style="cursor:pointer;"alt="看不清?点击更换"src="/include/vdimgck.php"/>再加上js(经测试,不加也可以使用)<scripttype="text/javascript">$=jQuery;functionchangeAuthCode(){varnum=newDate().getTime();varrand=Math.round(Math.random()*10000);num=num+rand;$('#ver_code').css('visibility','visible');if($("#vdimgck")[0]){$("#vdimgck")[0].src="../include/vdimgck.php?tag="+num;}returnfalse;}</script>