DEDECMS 栏目增加缩略图(5.5/5.6/5.7通用)

2012 年 3 月 18 日 63 条评论 8.12k 次阅读 0 人点赞

此功能添加涉及到以下文件:
dede/catalog_add.php
dede/catalog_edit.php
dede/templets/catalog_add.htm
dede/templets/catalog_edit.htm
include/taglib/channel.lib.php
此升级修改方法,在V5.7,V5.7sp1 测试通过,其他版本未测试,原理基本相同,请大家自行测试是否可行。

---------------------------------------华丽丽的分割线----------------------------------------------
打开文件夹templets这个目录,在里面新建一个文件夹typeimg,用于独立存放栏目缩略图,必须要建立此文件夹。
此修改已经不用新建文件夹,而直接用系统upload的图片文件夹。

部分童鞋反应,sql代码有的会执行出错,一般是标点符号的原因,一定要是英文状态下的( ' )而不是中文下的 ( ’ ) 两个是不一样的,谨记!

首先给 栏目表(`dede_arctype`)增加一个字段typeimg

alter table 'dede_arctype' add 'typeimg' varchar(200) NOT NULL default;

---------------------------------------华丽丽的分割线----------------------------------------------

修改catalog_add.php文件
打开dede/catalog_add.php

查找$queryTemplate = "insert into `#@__arctype`


(reid,topid,sortrank,typename,typedir,
替换为:
(reid,topid,sortrank,typename,typedir,typeimg,

('~reid~','~topid~','~rank~','~typename~','~typedir~',
替换为:
('~reid~','~topid~','~rank~','~typename~','~typedir~','~typeimg~',

查找
$in_query = "INSERT INTO `#@__arctype`

(reid,topid,sortrank,typename,typedir,
替换为:
(reid,topid,sortrank,typename,typedir,typeimg,

('$reid','$topid','$sortrank','$typename','$typedir',
替换为:
('$reid','$topid','$sortrank','$typename','$typedir','$typeimg',
保存catalog_add.php

---------------------------------------华丽丽的分割线----------------------------------------------
下面修改catalog_edit.php文件

打开dede/catalog_edit.php
查找$upquery = "Update `#@__arctype` set
在 typedir='$typedir', 其下面增加一行:
`typeimg`='$typeimg',
保存catalog_edit.php

---------------------------------------华丽丽的分割线----------------------------------------------

开始修改栏目添加模板文件

打开dede/templets/catalog_add.htm
在最上面找到这个段
<title>栏目管理</title>
<link href="css/base.css" rel="stylesheet" type="text/css">
替换为:
<title>栏目管理</title>
<link href="css/base.css" rel="stylesheet" type="text/css">
<script language="javascript" src="../include/js/dedeajax2.js"></script>
<script language='javascript' src="js/main.js"></script>
<script type="text/javascript" src="js/calendar/calendar.js"></script>

列表命名规则:

<br />列表命名规则:&lt;input id="namerule2" class="pubinputs" style="width: 250px;" type="text" name="namerule2" value="{typedir}/list_{tid}_{page}.html" /&gt;<br />&lt;/pre&gt;<br />&lt;img style="cursor: pointer;" onclick="ShowHide('helpvar3')" src="images/help.gif" alt="帮助" width="16" height="16" border="0" /&gt;<br />&lt;pre&gt;<br /><br />

在标签

下面增加一行:

<br />&lt;!--增加栏目缩略图--&gt;<br />栏目图片:&lt;/pre&gt;<br />&lt;table width="100%" border="0" cellspacing="1" cellpadding="1"&gt;<br />&lt;tbody&gt;<br />&lt;tr&gt;<br />&lt;td height="30"&gt;&lt;input id="typeimg" style="width: 240px;" type="text" name="typeimg" /&gt;<br /> &lt;input style="width: 70px; cursor: pointer; display: none;" type="button" value="本地上传" /&gt;<br /> &lt;iframe id="uplitpicfra" style="display: none;" name="uplitpicfra" src="" width="320" height="240"&gt;&lt;/iframe&gt;<br /> &lt;span class="litpic_span"&gt;&lt;input id="litpic" class="np coolbg" type="file" name="litpic" size="1" onchange="SeePicNew(this, 'divpicview', 'uplitpicfra', 165, 'archives_add.php');" /&gt;&lt;/span&gt;<br /> &lt;input class="np coolbg" style="margin-left: 8px;" onclick="SelectImage('form1.typeimg','small');" type="button" name="Submit2" value="选择图片" /&gt;<br /> &lt;input class="np coolbg" style="margin-left: 8px;" onclick="imageCut('typeimg');" type="button" name="Submit2" value="裁剪" /&gt;<br /> &lt;input id="ddisremote" class="np" type="checkbox" name="ddisremote" value="1" /&gt;远程<br />(栏目模板里用{dede:field.typeimg /}调用&lt;/td&gt;<br />&lt;/tr&gt;<br />&lt;/tbody&gt;<br />&lt;/table&gt;<br />&lt;pre&gt;<br /><br />&lt;!--增加栏目缩略图--&gt;<br />

保存catalog_add.htm

---------------------------------------华丽丽的分割线----------------------------------------------

开始修改栏目编辑模板文件

打开dede/templets/catalog_edit.htm

在最上面找到这个段
<title>栏目管理</title>
<link href="css/base.css" rel="stylesheet" type="text/css">
替换为:
<title>栏目管理</title>
<link href="css/base.css" rel="stylesheet" type="text/css">
<script language="javascript" src="../include/js/dedeajax2.js"></script>
<script language="javascript" src="js/main.js"></script>
<script type="text/javascript" src="js/calendar/calendar.js"></script>

查找

<br />列表命名规则:&lt;input id="namerule2" class="iptxt" type="text" name="namerule2" value="&lt;?php echo $myrow['namerule2']?&gt;" size="40" /&gt;<br />&lt;/pre&gt;<br />&lt;img style="cursor: pointer;" onclick="ShowHide('helpvar3')" src="images/help.gif" alt="帮助" width="16" height="16" border="0" /&gt;<br />&lt;pre&gt;<br /><br />

在其下面增加一行:

<br />&lt;!--增加栏目缩略图--&gt;<br />栏目图片:&lt;input id="typeimg" style="width: 300px;" type="text" name="typeimg" value="&lt;?php echo $myrow['typeimg']?&gt;" /&gt;&lt;input style="width: 70px;" onclick="SelectImage('form1.typeimg','');" type="button" name="Submit" value="浏览..." /&gt;<br /> &lt;input class="np coolbg" style="margin-left: 8px;" onclick="imageCut('typeimg');" type="button" name="Submit2" value="裁剪" /&gt;<br /> &lt;input class="np" type="checkbox" name="ddisremote" value="1" /&gt;<br /> 远程<br />(栏目模板里用{dede:field.typeimg /}调用)&lt;/pre&gt;<br />&lt;img src="&lt;?php if($myrow['typeimg']!=" alt="" /&gt;<br />&lt;pre&gt;" width="150" height="100" id="picview" name="picview"&gt;<br />&lt;!--增加栏目缩略图--&gt;<br />

保存catalog_edit.htm
---------------------------------------华丽丽的分割线----------------------------------------------

至此已经修改完成!
栏目图片的添加或修改图片时在 (栏目管理>高级选项)里面就会自动出现栏目图片添加的选择,点击选择图片,弹出窗口内选择浏览上传就OK

注意:前台栏目标签调用的时候,还需要改一个文件,才能实现栏目图片显示,否则只能通过sql语句才能显示图片。
打开:include/taglib/channel.lib.php
找到

<br />if($type=='top')<br />{<br />	$sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description<br />	  From `#@__arctype` where reid=0 And ishidden&lt;&gt;1 order by sortrank asc limit 0,$row";<br />}<br />else if($type=="son")<br />{<br />	//if($_sys_globals['typeid']&gt;0) $typeid = $_sys_globals['typeid'];<br />	if($typeid==0) {<br />		return '';<br />	}<br />	$sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description<br />	  From `#@__arctype` where reid='$typeid' And ishidden&lt;&gt;1 order by sortrank asc limit 0,$row";<br />}<br />else if($type=="self")<br />{<br />	if($reid==0) {<br />		return '';<br />	}<br />	$sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description<br />		From `#@__arctype` where reid='$reid' And ishidden&lt;&gt;1 order by sortrank asc limit 0,$row";<br />}<br />

替换成下面的:

<br />if($type=='top')<br />{<br />	$sql = "Select id,typename,typeimg,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description<br />	  From `#@__arctype` where reid=0 And ishidden&lt;&gt;1 order by sortrank asc limit 0,$row";<br />}<br />else if($type=="son")<br />{<br />	//if($_sys_globals['typeid']&gt;0) $typeid = $_sys_globals['typeid'];<br />	if($typeid==0) {<br />		return '';<br />	}<br />	$sql = "Select id,typename,typeimg,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description<br />	  From `#@__arctype` where reid='$typeid' And ishidden&lt;&gt;1 order by sortrank asc limit 0,$row";<br />}<br />else if($type=="self")<br />{<br />	if($reid==0) {<br />		return '';<br />	}<br />	$sql = "Select id,typename,typeimg,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description<br />		From `#@__arctype` where reid='$reid' And ishidden&lt;&gt;1 order by sortrank asc limit 0,$row";<br />}<br /><br />

调用方法:<img src="[field:typeimg /]" />
最近有很多网友问到修改的方法,现在我把已经修改好的后台文件分享出来,下载下来直接覆盖到后台就可以了。http://pan.baidu.com/share/link?shareid=92052&uk=353171678

---------------------------------------华丽丽的分割线----------------------------------------------

如果想同时在文章内容页调用栏目图片打开,修改\include\arc.archives.class.php
查找
if($this->ChannelUnit->ChannelInfos['issystem']!=-1)


$query = "Select arc.*,tp.reid,tp.typedir,ch.addtable
from `#@__archives` arc
left join #@__arctype tp on tp.id=arc.typeid
left join #@__channeltype as ch on arc.channel = ch.id
where arc.id='$aid' ";
$this->Fields = $this->dsql->GetOne($query);

替换为:
$query = "Select arc.*,tp.reid,tp.typedir,tp.typeimg,ch.addtable
from `#@__archives` arc
left join #@__arctype tp on tp.id=arc.typeid
left join #@__channeltype as ch on arc.channel = ch.id
where arc.id='$aid' ";
$this->Fields = $this->dsql->GetOne($query);

保存文件即可。

雷雷

这个人太懒什么东西都没留下

文章评论(63)

  • 沈阳SEO

    博主,你好,我按照你的方法修改了我的DEDECMS,但是我在前台列表页调用图片却显示不出来
    {dede:channel type='son'}

    {/dede:channel}

    2012 年 4 月 1 日
    • 雷雷

      @沈阳SEO 调用 img标签的 src="[field:typeimg /]" 即可

      2012 年 4 月 2 日
      • 百思不得其解

        @雷雷 我的文章内容页用这个标签调不出来么

        2014 年 4 月 3 日
        • 年华

          @百思不得其解 谢谢站长,弄好了

          2015 年 4 月 1 日
  • 可信网站认证

    学习啦.. :grin: :grin: :grin:

    2012 年 4 月 20 日
  • 酒中仙

    ' " 书写还不规范,大部分是中文输入法的时候输入的,建议修改一下。
    alter table `#@__arctype` add `typeimg` varchar(255) ”;
    这句我在SQL里就是执行不行,改成dede_arctype也不行,就直接在表里手动建了typeimg字段,但是原先的栏目不能修改栏目略缩图,新建的有,但是也不能修改,不知道怎么回事

    2012 年 4 月 30 日
    • 雷雷

      @酒中仙 sql语句我又优化了下。现在可以了。添加字段之后,我115网盘上有分享修改后的后台文件,直接覆盖就可以了。

      2012 年 5 月 1 日
  • 酒中仙

    请问您115网盘地址是?

    2012 年 5 月 2 日
    • 雷雷

      @酒中仙 仔细读文章:http://115.com/file/anqwqyi0

      2012 年 5 月 2 日
  • 微小说网

    :eek: 确定可以做吗?我现在也要做一个但不知道方法

    2012 年 5 月 3 日
    • 雷雷

      @微小说网 当然可以,按照步骤一步一步来就可以。后台文件,网盘有下载。

      2012 年 5 月 3 日
  • james

    已经证实可以使用你。太感谢博主了,我找了2天,终于找到个能用的了,谢谢 :razz:

    2012 年 5 月 15 日
  • 包子

    :!: 我替换了,但是都是乱码,网站现在瘫了

    2012 年 6 月 5 日
    • 雷雷

      @包子 你是GB2312编码的吧。我那个是UTF-8的。你用DW改下编码就行了。

      2012 年 6 月 5 日
  • 小河

    这个安装了下,
    现在的问题是新建的可以增加缩略图,但是原来的不能增加缩略图,一修改就提示保存失败.

    还有一个是新建的栏目,要修改下标题之类的,又提示保存失败.

    希望大哥帮我看下哦.谢谢了

    2012 年 6 月 17 日
    • 雷雷

      @小河 检查下数据库表是否添加字段了表设置是否有问题。然后在重新覆盖下后台程序文件。打包有下载。

      2012 年 6 月 17 日
  • 港币汇率

    显示的效果网站可以看下嘛

    2012 年 6 月 22 日
    • 雷雷

      @港币汇率 一步一步按照步骤来,就可以了。

      2012 年 6 月 22 日
  • 酒中仙

    sql语句还是不能执行啊,是不是#@__的原因,为什么有两个_符号呢,#$是不是需要更改为自己数据库的前缀,还有其它的单引号用哪种格式,前几天本来找到一个网站可以复制执行的了,但是忘记收藏了,郁闷,现在又是这个问题.

    2012 年 6 月 23 日
    • 雷雷

      @酒中仙 如果你的DEDE没有改字段前缀的话,就把#@__arctype改成dede_arctype在执行。

      2012 年 6 月 24 日
  • 小溪

    :idea: 果然是高手! :grin: thanks!

    2012 年 7 月 15 日
  • memento0705

    奇怪,文件改掉后,图片可以添加,但是栏目一保存就出错,无法保存,还原修改可以保存,这是什么问题

    2012 年 7 月 18 日
    • 雷雷

      @memento0705 看下你的数据库dede_arctype有没有typeimg这个字段。如果没有的话,保存是会报错的,后台执行下最上面的那个语句就行了。

      2012 年 7 月 18 日
  • feng1650

    辛苦了,我也出现保存错误。在数据库dede_arctype看不到typeimg,添加不进去,怎么回事啊

    2012 年 7 月 25 日
    • feng1650

      @feng1650 成功执行0个SQL语句!

      执行: alter table `dede_arctype` add `typeimg` varchar(200) NOT NULL default ”; 出错,错误提示:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '”' at line 1

      2012 年 7 月 25 日
      • 雷雷

        @feng1650 alter table `dede_arctype` add `typeimg` varchar(200) NOT NULL default; 注意语句的完整性,在dedecms后台执行。

        2012 年 7 月 25 日
  • 拇指

    网盘失效了 :twisted: 需要绑定手机才能分享给大众的说 :!:

    2012 年 8 月 3 日
    • 雷雷

      @拇指 哎呀,115比较坑啊! 现在已经弄好了。

      2012 年 8 月 3 日
  • 清越

    复盖了,但是栏目在保存时提示:当前栏目更改时失败,请检查你的输入资料是否存在 这是什么问题!

    2012 年 8 月 28 日
    • 雷雷

      @清越 alter table `dede_arctype` add `typeimg` varchar(200) NOT NULL default; 注意语句的完整性,在dedecms后台执行就可以了。你的数据库没有那个字段,所以会报错的。

      2012 年 8 月 28 日
  • 艳阳天

    感谢分享!
    不过代码严重不规范 好多引号有错误 搞了变天都没搞好 最后才发现是引号错误引起的! 相当郁闷啊
    建议博主修改一下,要不以后那些想我一下复制粘贴的人又要吃苦头了

    2012 年 10 月 18 日
    • 雷雷

      @艳阳天 其实我也很郁闷呢。我本地是正确的,粘贴到WORDPRESS里就变成这样了,不晓得怎么改呢。

      2012 年 10 月 18 日
  • syouketu

    新建的栏目可以添加缩略图,可是无法保存,一保存就抱错。另外:数据库里有typeimg字段。

    2012 年 10 月 25 日
    • 雷雷

      @syouketu 那应该是程序没有修改好。可以下载网盘里面文件覆盖就行了。

      2012 年 10 月 25 日
  • xvinda

    :!: 我按照步骤弄完后,添加图片,保存不了,提示“
    保存当前栏目更改时失败,请检查你的输入资料是否存在问题”

    2012 年 11 月 15 日
    • 雷雷

      @xvinda 请检查数据库是否有正确添加字段。

      2012 年 11 月 15 日
      • xvinda

        @雷雷 数据库中已有typeimg 这个字段,之前在网上看到别的办法可以保存,但是不能调出图片,看到您的方法后,尝试您的办法,但保存时出错。

        2012 年 11 月 15 日
        • 雷雷

          @xvinda 请下载网盘附件文件,直接覆盖吧,记得编码要改成跟你的一样。http://pan.baidu.com/share/link?shareid=92052&uk=353171678

          2012 年 11 月 15 日
          • xvinda

            @雷雷 谢谢,成功了,我对比了你的和我的文件,最后终于找到问题了,竟然是'' 我的是‘’,谢谢你了。

            2012 年 11 月 15 日
        • 年华

          @xvinda 遇到一样的问题,用的是5.7的版本,困扰几天了

          2015 年 4 月 1 日
        • 年华

          @xvinda 遇到一样的问题,用的是5.7的版本,困扰几天了,不会真的是你文章说的标点符号的问题吧

          2015 年 4 月 1 日
  • 广州二胡

    目前最正规的版本,测试可用。感谢

    2012 年 12 月 11 日
  • 小峰

    博主:你好 DedeCMS V5.7 SP1正式版,无法执行alter table `dede_arctype` add `typeimg` varchar(200) NOT NULL default ;

    2013 年 3 月 2 日
  • 小峰

    已经解决 。。。。

    2013 年 3 月 2 日
  • 新手

    添加图片是成功的,我想除了图片再添加几个栏目属性,结果就很难成功了。而且还出现了“保存目录数据时失败,请检查你的输入资料是否存在问题!”,请问如果解决啊?大神

    2013 年 5 月 23 日
    • 雷雷

      @新手 一般出现“保存目录数据时失败,请检查你的输入资料是否存在问题!”是由于系统无法保存至数据库引起的,可能是数据库中没有这个字段。程序与数据库匹配就可以添加多个栏目属性。

      2013 年 5 月 23 日
      • 年华

        @雷雷 我也遇到这个问题了,写入不到数据库你不会是数据库版本的问题吧,数据库字段添加成功了,data给了写入的权限,可就是保存不了

        2015 年 4 月 1 日
  • 阿光

    您好,雷雷博主,我按着您的方法,可以用sql来实现栏目略缩图功能,但无法直接调用,按着您上面的替换也试了,还是不行,换了其它方法也不行,望赐教;

    2013 年 7 月 16 日
    • 雷雷

      @阿光 include/taglib/channel.lib.php文件改了吗?实在不行的话,网盘有源码提供下载哦。备份你下你原来的。然后覆盖掉。记得编码改成跟你一样的。

      2013 年 7 月 26 日
  • 哉风

    想按修改channel.lib.php的方法去修改channelartlist.lib.php 让channelartlist标签也拥有此功能(因为这标签可以选择所需要的栏目),但是没能成功,我就在相关的地方加了typeimg进去了,但是显示不出来,雷雷博方能帮帮忙吗?

    2013 年 7 月 27 日
    • 雷雷

      @哉风 dede的栏目调用上下都是关联的。首先要sql读出来typeimg的字段值,下面在把值赋予标签。
      channelartlist.lib.php的大概在78行左右sql查询typename字段后加上typeimg字段应该就可以了。具体没试过,你可以尝试下是否可行。

      2013 年 8 月 28 日
  • 阿龙

    在dede:list中调不出来

    {dede:list pagesize='10'}
    [[field:typelink/]] [field:title/] [field:pubdate
    function="GetDateTimeMK(@me)"/]
    [field:description/]...
    {/dede:list}

    2013 年 9 月 28 日
  • 世子

    :razz:
    非常感谢雷雷!
    非常感谢雷雷!
    非常感谢雷雷!
    非常感谢雷雷!
    非常感谢雷雷!
    非常感谢雷雷!
    非常感谢雷雷!

    2013 年 10 月 2 日
  • 649472841

    成功执行1个SQL语句!

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''dede_arctype' add 'typeimg' varchar(200) NOT NULL default' at line 1

    这个是什么意思啊

    2013 年 10 月 20 日
    • 雷雷

      @649472841 语句有误!

      2013 年 11 月 6 日
  • 牧羊少年

    鎴愬姛鏇存敼涓€涓垎绫伙紒
    如果你的浏览器没反应,请点击这里...
    我更改栏目保存后,就提示这个?是什么原因,编码格式不一样吗?

    2013 年 12 月 14 日
    • 雷雷

      @牧羊少年 是的,改成跟你的网站一样的编码就可以了。

      2013 年 12 月 17 日
  • 锐旗网

    不好用啊,请帮忙

    2014 年 1 月 20 日
    • 雷雷

      @锐旗网 一般情况下有2个原因!dede_arctype的表没有增加typeimg字段,还有一个就是编码问题,检查一下吧。更改好的文件有打包下载,自行下载改下编码就行了。

      2014 年 1 月 21 日
      • 百思不得其解

        @雷雷 博主你好,我的数据库里有字段而且图片也插进去了,但是调不出来

        2014 年 4 月 4 日
        • 雷雷

          @百思不得其解 那应该是标签解析程序那里的问题吧,看看有没有读取img字段,实在不行,你下载下源文件替换吧!

          2014 年 4 月 25 日
  • 乐乐

    为什么我的代码是这样的,跟楼主分享的不一样?该怎么改?
    if($type=='top')
    {
    $sql = "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath
    From `#@__arctype` WHERE reid=0 And ishidden1 order by sortrank asc limit 0, $line ";
    }
    else if($type=='son')
    {
    if($typeid==0) return '';
    $sql = "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath
    From `#@__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 `#@__arctype` WHERE reid='$reid' And ishidden1 order by sortrank asc limit 0, $line ";
    }

    2016 年 2 月 23 日
  • 乐乐

    为什么我发的那条代码没有了?

    2016 年 2 月 24 日
  • (Spamcheck Enabled)