DEDECMS5.5技巧与新功能大全
作者:佳明妈 来源:网页特效 2010-05-26 人气:1,912更新后出现不能修改栏目等解决方法:
Copy code
ALTER TABLE `dede_admintype` CHANGE `rank` `rank` FLOAT( 6 ) DEFAULT '1';
UPDATE `dede_admintype` set `rank`=(5 + (`rank`/10)) where `rank` > 10;
ALTER TABLE `dede_admin` CHANGE `usertype` `usertype` FLOAT( 6 ) UNSIGNED DEFAULT '0';
UPDATE `dede_admin` set `usertype`=(5 + (`usertype`/10)) where `usertype` > 10;
INSERT INTO `dede_sysconfig` (`aid`, `varname`, `info`, `groupid`, `type`, `value`) VALUES (746, 'cfg_album_mark', '图集是否使用水印(小图也会受影响)', 3, 'bool', 'N');
ALTER TABLE `dede_arctype` ADD `seotitle` VARCHAR( 80 ) NOT NULL DEFAULT '' AFTER `keywords` ;
UPDATE `dede_arctype` set `seotitle` = `typename`;
ALTER TABLE `dede_arctype` CHANGE `keywords` `keywords` VARCHAR( 60 ) NOT NULL DEFAULT '';
ALTER TABLE `dede_tagindex` ADD `typeid` SMALLINT( 5 ) UNSIGNED DEFAULT '0' NOT NULL AFTER `tag` ;
2,5.5版调用静态JS广告技巧
5.5版的静态广告JS,确实很方便,加载速度也快了一截
但是官方却不给出调用教程,让一些新手找不到北
不废话了调用步骤:
后台-系统-系统基本参数-性能选项-模板缓存目录:这里设置广告文件存放的目录
接下来添加好广告后再前台调用,代码如下
Copy code<script src='/data/cache/myad-12.htm' language='javascript'></script>其中是12是ID注:添加或者修改广告后,点击更新系统缓存即可
3,1363解决办法
找到include目录下的common.inc.php文件
查找0755
然后将0755两边的引号去掉
或者直接下载本附件覆盖即可。
本附件为GBK版本,UTF-8请自行修改。
http://bbs.dedecms.com/170466.html
4,5.5Ajax评论出现br换行符的解决方法
plusfeedback_ajax.php
查找
$msg = str_replace('<', '>', $msg);
$msg = str_replace('>', '>', $msg);
删掉这两行, 然后在下面加一句 $msg = str_replace('/', ' ', $msg);
查找
$fields['msg'] = str_replace('<', '>', $fields['msg']);
$fields['msg'] = str_replace('>', '>', $fields['msg']);
删除. 然后在下面加上
$fields['msg'] = str_replace('/', ' ', $fields['msg']);
5,Google SiteMap生成器For dedecms5.5
通过dedecmsV5.5自带的自由列表制作Google SiteMap。
第一步:
找到“核心 - 频道模型 - 自动列表”,选择“增加列表”
第二步:
自由列表标题:Google SiteMap 生成器
列表HTML存放目录:{cmspath}/freelist
目录默认页名称:googlemap_{page}.xml
命名规则:{listdir}/index_{listid}_{page}.xml
列表模板:default/googlemap.htm
最大列出页数:100(根据自己实际情况而定)
关键字:(根据自己实际情况而定)
列表描述:Google SiteMap
第三步:
在“列表样式 ”
循环内的单行记录样式(InnerText):[底层变量field参考]中填写:
<url>
<loc>[field:arcurl function='Gmapurl("@me")'/]</loc>
<lastmod>[field:senddate function="strftime('%Y-%m-%d',@me)"/]</lastmod>
</url>
第四步:
点击“保存一个列表”
第五步:更新列表
第六步:提交“Google SiteMap”
6,当前会员发布的相关文章
{dede:sql sql="SELECT * FROM dede_archives WHERE writer=~writer~"}
[field:id/],
{/dede:sql}
7,栏目做成单页,内容在首页调用代码
{dede:channelartlist type="1"}
{dede:field.content/}
{/dede:channelartlist}
8,让评论显示日期和时间
评论只能显示日期,不能显示时间
解决办法:
在feedback_ajax.php里把
<?php echo GetDateMk($dtime); ?>
替换成
<?php echo GetDateTimeMk($dtime); ?>
即可。
9,如何调用当前作者发布的文章
5.5 本身是支持调用当前作者或指定作者发布的文章的, 调用方法如下:
{dede:arclist writer='this' typeid='top'}
[field:textlink /]<br />
{/dede:arclist}
参数说明:
writer='this' 表前当前文章的作者,你也可以指定任意的ID(数字ID),如 writer='10'
typeid='top' 考虑到投稿文章可能比较少,用这属性是调用作者所有的最新文章, 如果不指定此属性, 则调用作者在文章所在栏目内发表的文章。
10,收费文章后面显示VIP图标
循环列表,你如果把文章设置“高级会员”才可浏览:
Copy code{dede:arclist row=14 titlelen=32 noflag='h'}
<li><a href="[field:arcurl/]">[field:title/]</a>[field:arcrank function="(@me>'99' ? '<img src=vip.gif/>' : @me)"/]</li>
{/dede:arclist}
11,首页调用留言本解决方法,带用户头像
代码如下:
{dede:loop table='dede_guestbook' sort='dtime' row='10' titlelen='36' typeid='40' if='ischeck=1'}
<a href="[field:phpurl/]/plus/guestbook.php">
[field:uname /]
<img src='[field:phpurl/]/plus/guestbook/images/[field:face /].gif'>
[field:msg function="cn_substr([url=mailto:]'@me',30)"/[/url]]
[field:ip /]
</a>
{/dede:loop}
其中 [field:uname /]为调用用户昵称
<img src='[field:phpurl/]/plus/guestbook/images/[field:face /].gif'>为调用用户头像
[field:msg function="cn_substr([url=mailto:]'@me',30)"/[/url]]为调用评论内容
[field:ip /]为调用发帖者IP地址
12,调用推荐专题的图片
{dede:arclist flag='c' channelid='-1' titlelen=42 row=6}
[field:array runphp='yes']@me = (empty(@me['litpic']) ? "" : "<a [url={@me[]href='{@me['arcurl']}'[/url] class='preview'><img [url=mailto:src=]src='{@me['litpic']}'[/url] width='82' height='62'></a>"); [/field:array]{/dede:arclist}
13,针对搜索发布可搜多关键词及定栏目搜索
1.
<input type="hidden" name="kwtype" value="0">
<input type="hidden" name="channeltype" value="1">
<input name="keyword" id="search-keyword" type="text">
第一个红色字的0是一定要改,如果是1就会错误。参考高级搜索里这个是搜索关键字类型
1是搜索你关键字或者相关文章
0是搜索你关键字与之相关文章
大家可以测试两个是否这样哈哈。。
2.
<input type="hidden" name="channeltype" value="1">
这个是定义栏目的记得好像是忘记改的时候是什么思路了。。哈哈
反正加上就好拉。。。还有一个地方。
<select name='typeid' id='typeid' class="select">
<option value='titlekeyword' selected='1'>--不限栏目--</option>
{dede:channelartlist row='950' typeid='3,376,375,218,229,383,18,360,366,93,60,16,66,109,103,82,23,118,50,72,4,29,41,211,204,197,355,242,190,181,174,171,163,154,147,138,130,86,273,228,227'}<option value="{dede:field name='typeid'/}">—{dede:field name='typename'/}</option>{/dede:channelartlist}
</select>
上面的。。
<select name='typeid' id='typeid' class="select">
这个是定义按栏目ID来搜索
value='titlekeyword' selected='1'
这里是定义智能搜索的。
而下面的是调出栏目的ID按ID来搜索参考就OK拉哈哈大概就这样。。。
14,在arclist调用时,flag有p属性时在前面加一个小图片
[field:flag runphp='yes'] if(ereg('p', @me)) @me = "<font color='red'>(pic)</font>";
else @me = "";
[/field:flag]
15,验证码出错解决方法 解决同时打开多页面验证码出错的问题
首先在页面中合适的位置插入一下文件,当然你也可以另建一个JS文件调用
<script type="text/javascript">
function ShowVCode() {
var vcode= document.getElementById("validateimg");
var dt = new Date();
vcode.src = "/include/vdimgck.php?"+dt;
vcode.style.display = "inline";
}
function HideVCode() {
var vcode= document.getElementById("validateimg");
vcode.src = "这里填附件中那个图片在你主机上的地址";
vcode.style.display = "none";
}
</script>
然后修改验证码这一行,改成一下的即可
验证码:<input type='text' name='validate' size='4' class='ipt-txt' /><img src="{dede:global.cfg_cmsurl /}/include/vdimgck.php" id="validateimg" style="display:none;" alt="验证码" />
最后,修改发表评论这一行。如下代码即可
<button type="button" onclick='PostComment()' onblur='HideVCode'>发表评论</button>
附件图片:
16,适合5.3、5.5版本的论坛帖子、精华帖子、分类信息调用标签代码
<ul class="d2 ico2">
<!--论坛开始-->
{dede:loop table="cdb_threads" sort="tid" row="6"}
<LI><A target="_blank" href="/bbs/viewthread.php?tid=[field:tid /]">[field:subject function="cn_substr('@me',60)" /]</A>
{/dede:loop}
<!--/论坛完毕-->
</ul>
</dd>
其中: cdb_为DZ论坛数据库前缀 bbs/ 当然也改为你的论坛目录
2、分类信息调用标签代码
<div class="job2">
<ul class="c2 ico2">
<!--分类开始-->
{dede:arclistsg row='26' titlelen='46' orderby='rand' channelid='-8' typeid='8' idlist=''}
<LI>[[field:typelink/]] [field:textlink/]<br/>
{/dede:arclistsg}
<!-- /分类完毕 -->
</ul>
</div>
3、DZ论坛精华帖调用
<dl class="tbox">
<dt><strong>论坛精华</strong></dt></dl>
<ul class="c1 ico2">
<!-- /论坛精华调用 -->
{dede:loop table="cdb_threads" if='digest>0' sort="tid" row="8"}
<LI><A target="_blank" href="/bbs/viewthread.php?tid=[field:tid /]">[field:subject function="cn_substr('@me',34)" /]</A>
{/dede:loop}
<!-- /论坛精华调用完毕 -->
</ul>
</div>
注:调用标签开头 {dede: 如 {dede:loop table 和{dede:arclistsg
调用标签结尾 {/dede: 如 {/dede:loop} 和{/dede:arclistsg}
17,让likearticle标签取得附加表内容
新的标签源代码跟 likearticle 标签一样。要修改的部分有两个
1: 调用的函数名:
将
改为
2: 修改SQL查询语句
原语句
tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath
from `dede_archives` arc left join `dede_arctype` tp on arc.typeid=tp.id
where arc.arcrank>-1 and ($keyword) $typeid $orderquery limit 0, $row";
修改成
$query = "Select arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,
tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath,addf.price,addf.oldprice,addf.band,addf.alcount
from `dede_archives` arc left join `dede_arctype` tp on arc.typeid=tp.id
left join `dede_goods` addf on addf.aid = arc.id
where arc.arcrank>-1 and ($keyword) $typeid $orderquery limit 0, $row";
红色部分是要增加的部分,第一个是把要查询的附加表的字段名加上,第二个就是把附加表给联上。
18,解决同一IP重复注册问题【控制注册间隔天数】
好久没有研究dedecms程序了,本来也不怎么熟悉php,再加上自己也蛮懒的。
但是最近我的一个dede5.3+pw7.32的网站老是被人恶意注册下载资源,pw有设置注册控制的,但是dedecms没有注册控制的,dede能使得同一IP无限制的重复注册。这就是问题的所在!!!!我使用的是正向整合,所以所有注册都是通过dede的。静静的想一想感觉每天为了删除那些同一IP重复注册的会员都烦死了啊,开始我由于像我前面说的话,我很懒,也就只有手动去删除,但是久了就烦了啊。
今天好不容易静下心来,打算把这个问题给解决了啊。看着我发帖了,大家都应该猜到了我是解决了哈。对的,俺解决了哈!
思路如下:由于同一IP的重复注册使得网站会员大增,且dede没有控制同一IP注册的限制,所以就得俺动手了哈。不卖管子了,废话缩了半天下面开始。
方式:要解决这个问题就得在新用户注册前进行判断,此用户的IP是否已经注册过,利用会员注册的时间和现在的时间进行相比来控制同一IP注册间隔的天数哈。有两种方式:一是修改member/index_do.php,二是修改member/reg_new.php。
第一种方式不是完美的,存在有漏洞。第二种是最完美的。现在我把有第一种方式贴出来给大家分享。
是在member/index_do.php中的查找下面代码:
//引入注册页面
else if($dopost=="regnew")
然后在后面添加:
//引入注册页面
else if($dopost=="regnew")
{
//$ip=$_SERVER['REMOTE_ADDR'];
$ip=GetIP();
$nameee='holy16';
$row = $dsql->GetOne("Select jointime From [url=mailto:%60dede_member]`dede_member[/url]` where joinip like '$ip' order by mid desc limit 1");
$now_time =date("Y-m-d",time());
$join_time =date("Y-m-d",$row['jointime']);
$d1=strtotime($now_time);
$d2=strtotime($join_time);
$Days=round(($d1-$d2)/3600/24);
if ($Days>=1){
require_once(dirname(__FILE__)."/reg_new.php");
}
else{
ShowMsg("请不要重复注册,谢谢你对监测人网站的支持。","-1");
}
//加入防止一个IP重复注册,结束$row['jointime']
//require_once(dirname(__FILE__)."/reg_new.php");
//exit();
}
就能实现简单的防止同一IP重复注册的问题。
19,根据公用表ID获取文章静态地址的函数
高手见笑了
增加到 inculdecommon.func.php 文件最后
调用方式{dede:field.XXX function='GetOneDocUrl(@me)'/}
function GetOneDocUrl($aid)
{
global $dsql;
include_once(DEDEINC."/channelunit.func.php");
$aid = trim(ereg_replace('[^0-9]','',$aid));
$chRow = $dsql->GetOne("Select arc.*,ch.maintable,ch.addtable,ch.issystem From `dede_arctiny` arc left join `dede_channeltype` ch on ch.id=arc.channel where arc.id='$aid' ");
if(!is_array($chRow)) {
return $reArr;
}
else {
if(empty($chRow['maintable'])) $chRow['maintable'] = 'dede_archives';
}
if($chRow['issystem']!=-1)
{
$nquery = " Select arc.*,tp.typedir,tp.topid,tp.namerule,tp.moresite,tp.siteurl,tp.sitepath
From `{$chRow['maintable']}` arc left join `dede_arctype` tp on tp.id=arc.typeid
where arc.id='$aid' ";
}
else
{
$nquery = " Select arc.*,1 as ismake,0 as money,'' as filename,tp.typedir,tp.topid,tp.namerule,tp.moresite,tp.siteurl,tp.sitepath
From `{$chRow['addtable']}` arc left join `dede_arctype` tp on tp.id=arc.typeid
where arc.aid='$aid' ";
}
$arcRow = $dsql->GetOne($nquery);
$Url = GetFileUrl($aid,$arcRow['typeid'],$arcRow['senddate'],$reArr['title'],$arcRow['ismake'],$arcRow['arcrank'],$arcRow['namerule'],$arcRow['typedir'],$arcRow['money'],$arcRow['filename'],$arcRow['moresite'],$arcRow['siteurl'],$arcRow['sitepath']);
return $Url;
}
20,搞定编辑器自动加DIV的毛病
根据那朋友的去垃圾代码函数改了下 把div换成p 完美解决有DIV的毛病,同时不影响图片美观```
主要修改文件 /dede/inc/inc_archives_functions.php (修改前先备份,免得出错`)
查找
{
在下面加入
echo $str." ";
修改好后替换原文件``````` (替换前记得一定要备份`)
21,分享一下arclistsg标签调用联动类型(显示联动连接)
首先在includechannelunit.func.php中加上
//联动类型
function GetInfoType($infotype)
{
global $dsql;
$typename='';
$query = " Select ename From [url=mailto:%60dede_sys_enum]`dede_sys_enum[/url]` where egroup = 'infotype' And evalue = '$infotype' ";
$dsql->Execute('ename',$query);
while($row=$dsql->GetArray('ename'))
{
$typename .=($typename=='' ? $row['ename'] : ','.$row['ename']);
$typelink = "<a href='$cfg_phpurl/plus/list.php?channelid=-8&infotype=$infotype'>$typename</a>";
}
return $typelink;
}
调用方法是在arclistsg标签中添加 [field:infotype function='GetInfoType(@me)'/]
首页 调的
{dede:arclistsg row='10' titlelen='24' orderby='pubdate' channelid='-8' idlist=''}
[[field:typelink/]] [field:textlink/] [field:infotype function='GetInfoType(@me)'/]
<br/>
{/dede:arclistsg}
22,V55 超完美评论显IP隐藏最后一组的技巧
http://bbs.dedecms.com/174590.html
首先在 /plus/feedback_ajax.php 文件里找到 <span class='username'><a href='<?php echo $spaceurl; ?>'><?php echo $username; ?></a></span> ,注意这个代码有两个,
把第一个修改为 <span class='username'>我(<?php echo $ip; ?>)</span> ,
第二个修改为 <span class='username'><a href='<?php echo $spaceurl; ?>'><?php echo $username; ?></a>(<?php echo ereg_replace("[^.]{1,3}$","*",$fields['ip']); ?>)</span> 即可
现在试试你的AJAX评论页面吧。。。
然后,找到 /templets/plus/feedback_templet.htm 这个文件
将 <span class="username"> {dede:field.username/}</span> 修改为 <span class="username">{dede:field.username/}({dede:field.ip function=substr(@me,0,strrpos(@me,'.'))/} .*)</span> 即可
现在无论是你的AJAX评论页还是详细评论页都收到了同样的效果了!
麻烦在我另一帖捣乱的人别用,你不懂得尊重别人,别人也没必要尊重你
可以说,目前我这个方法是最简单 最完美的,而且用户体验也比较好!
23,DEDE调用ECSHOP商城资讯
功能说明:调用商城首页的站内快讯信息。
{dede:sql sql="SELECT a.article_id,a.cat_id,a.title,p.cat_name,p.cat_type FROM ecs_article_cat p left join ecs_article a on a.cat_id = p.cat_id where p.cat_type = 1 LIMIT 0 , 8"}
<li><a href="http://www.qqcoke.com/shop/article_cat.php?id=[field:cat_id/]" title="[field:cat_name/]"> [[field:cat_name/]]<a href="http://www.qqcoke.com/shop/article.php?id==[field:article_id/]" title="[field:title/]">[field:title function="cn_substr('@me',24)"/]</a></li>
{/dede:sql}
注:dede系统和ECSHOP在同一个数据库里。
24,dede5.5无评论时提示“暂无评论”
1.打开plus/feedback_ajax.php文件
2.搜索:$allpage = ceil($totalcount / $pagesize); 回车 在下面加入代码:
{
echo '<center><span style="height:30px; line-height:30px;color:red;">暂无评论(当然文字可以自己修改啦~O(∩_∩)O~)</span></center>';
return ;
}
解释:判断如果总页数小于1.(有评论都是≥1的)则提示“暂无评论”。
怕有人不会修改,再附上修改好的代码示例
修改好的代码如下(红色为后加上去的):
$allpage = ceil($totalcount / $pagesize);
if($allpage < 1)
{
echo '<center><span style="height:30px; line-height:30px;color:red;">英雄老矣,尚能言否?</span></center>';
return ;
}
else if($allpage < 2)
{
echo '';
return ;
}
25,dede5.5完美楼层效果(1楼、2楼、3楼)
修改方法:
1.打开/plus/feedback_ajax.php 文件,找到第236行,加入红色标记代码:
global $dsql, $aid, $pagesize, $cfg_templeturl, $n, $x;
解释:定义变量n和x。
————————————————————————————————
2.去到第240行,在两行之间加入红色标记代码:
$totalcount = (empty($row['dd']) ? 0 : $row['dd']);
$lou = (empty($row['dd']) ? 0 : $row['dd']);
$startNum = $pagesize * ($page-1);
解释:定义变量lou=所有留言总数。
————————————————————————————————
3.去到269行,在两行之间加入红色标记代码:
$fields['msg'] = Quote_replace($fields['msg']);
$n=$lou--;
$curpage = empty($page) ? 1 : intval($page);
$x=$n-($curpage-1)*$pagesize;
extract($fields, EXTR_OVERWRITE);
解释:
让变量$n=所有留言总数递减;
调出$curpage= 当前第几页;
让变量$x=变量$n-(当前页-1)×每页显示留言数。
————————————————————————————————
4.去到 292行,在几行之间加入红色标记代码:
<a href='#postform' onclick="quoteCommet('<?php echo $id; ?>');">[引用]</a>
</span>
<span style=" color:#FF0000; margin-left:20px;"><?php echo $x; ?> 楼</span>
</div>
<div class='decmt-content'>
解释:输出楼层变量。
————————————————————————————————
5.保存,上传,覆盖。
26,5.5:图集手工上传图片,加入水印
使用dede5.5的图集手工上传图片,用的是一个非常好用的flash上传图片工具。
但是如果我们希望上传的图片,带有自己网站指定的水印,却发现没有达到我们的要求……
这个很难说好还是不好,不同人有不用需求而已!
那么如果我们确实希望上传的图片,带有水印,怎么办!?
以下就是修改办法:
打开dedeswfupload.php 第100行
//WaterImg($cfg_basedir.$fileurl, 'up');
把这句话前面两个 // 去掉,即可!
27,发布文章“下载远程图片”,缩略图片在限制尺寸之内(dede 5.5)
http://bbs.dedecms.com/183330.html
28,正文编辑器上传图片,未能加入水印
http://bbs.dedecms.com/183332.html
29,5.5 上传图片加水印后文件增大的解决办法
http://bbs.dedecms.com/183583.html
30,实现统计每个栏目下的文章总数的调用
http://bbs.dedecms.com/185383.html
31,添加注册会员在前台发布文章时上传文章附件的功能(适用于5.3和5.5)
http://bbs.dedecms.com/182996.html
32,V55小插件:会员升级成为管理员
http://bbs.dedecms.com/178848.html
DEDECMS5.5技巧与新功能大全由懒人建站收集整理,您可以自由传播,请主动带上本文链接
懒人建站就是免费分享,觉得有用就多来支持一下,没有能帮到您,懒人也只能表示遗憾,希望有一天能帮到您。
DEDECMS5.5技巧与新功能大全-最新评论