此功能添加涉及到以下文件:
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 />列表命名规则:<input id="namerule2" class="pubinputs" style="width: 250px;" type="text" name="namerule2" value="{typedir}/list_{tid}_{page}.html" /><br /></pre><br /><img style="cursor: pointer;" onclick="ShowHide('helpvar3')" src="images/help.gif" alt="帮助" width="16" height="16" border="0" /><br /><pre><br /><br />
在标签
下面增加一行:
<br /><!--增加栏目缩略图--><br />栏目图片:</pre><br /><table width="100%" border="0" cellspacing="1" cellpadding="1"><br /><tbody><br /><tr><br /><td height="30"><input id="typeimg" style="width: 240px;" type="text" name="typeimg" /><br /> <input style="width: 70px; cursor: pointer; display: none;" type="button" value="本地上传" /><br /> <iframe id="uplitpicfra" style="display: none;" name="uplitpicfra" src="" width="320" height="240"></iframe><br /> <span class="litpic_span"><input id="litpic" class="np coolbg" type="file" name="litpic" size="1" onchange="SeePicNew(this, 'divpicview', 'uplitpicfra', 165, 'archives_add.php');" /></span><br /> <input class="np coolbg" style="margin-left: 8px;" onclick="SelectImage('form1.typeimg','small');" type="button" name="Submit2" value="选择图片" /><br /> <input class="np coolbg" style="margin-left: 8px;" onclick="imageCut('typeimg');" type="button" name="Submit2" value="裁剪" /><br /> <input id="ddisremote" class="np" type="checkbox" name="ddisremote" value="1" />远程<br />(栏目模板里用{dede:field.typeimg /}调用</td><br /></tr><br /></tbody><br /></table><br /><pre><br /><br /><!--增加栏目缩略图--><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 />列表命名规则:<input id="namerule2" class="iptxt" type="text" name="namerule2" value="<?php echo $myrow['namerule2']?>" size="40" /><br /></pre><br /><img style="cursor: pointer;" onclick="ShowHide('helpvar3')" src="images/help.gif" alt="帮助" width="16" height="16" border="0" /><br /><pre><br /><br />
在其下面增加一行:
<br /><!--增加栏目缩略图--><br />栏目图片:<input id="typeimg" style="width: 300px;" type="text" name="typeimg" value="<?php echo $myrow['typeimg']?>" /><input style="width: 70px;" onclick="SelectImage('form1.typeimg','');" type="button" name="Submit" value="浏览..." /><br /> <input class="np coolbg" style="margin-left: 8px;" onclick="imageCut('typeimg');" type="button" name="Submit2" value="裁剪" /><br /> <input class="np" type="checkbox" name="ddisremote" value="1" /><br /> 远程<br />(栏目模板里用{dede:field.typeimg /}调用)</pre><br /><img src="<?php if($myrow['typeimg']!=" alt="" /><br /><pre>" width="150" height="100" id="picview" name="picview"><br /><!--增加栏目缩略图--><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<>1 order by sortrank asc limit 0,$row";<br />}<br />else if($type=="son")<br />{<br /> //if($_sys_globals['typeid']>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<>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<>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<>1 order by sortrank asc limit 0,$row";<br />}<br />else if($type=="son")<br />{<br /> //if($_sys_globals['typeid']>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<>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<>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)
博主,你好,我按照你的方法修改了我的DEDECMS,但是我在前台列表页调用图片却显示不出来
{dede:channel type='son'}
{/dede:channel}
@沈阳SEO 调用 img标签的 src="[field:typeimg /]" 即可
@雷雷 我的文章内容页用这个标签调不出来么
@百思不得其解 谢谢站长,弄好了
学习啦.. :grin: :grin: :grin:
' " 书写还不规范,大部分是中文输入法的时候输入的,建议修改一下。
alter table `#@__arctype` add `typeimg` varchar(255) ”;
这句我在SQL里就是执行不行,改成dede_arctype也不行,就直接在表里手动建了typeimg字段,但是原先的栏目不能修改栏目略缩图,新建的有,但是也不能修改,不知道怎么回事
@酒中仙 sql语句我又优化了下。现在可以了。添加字段之后,我115网盘上有分享修改后的后台文件,直接覆盖就可以了。
请问您115网盘地址是?
@酒中仙 仔细读文章:http://115.com/file/anqwqyi0
确定可以做吗?我现在也要做一个但不知道方法
@微小说网 当然可以,按照步骤一步一步来就可以。后台文件,网盘有下载。
已经证实可以使用你。太感谢博主了,我找了2天,终于找到个能用的了,谢谢
:!: 我替换了,但是都是乱码,网站现在瘫了
@包子 你是GB2312编码的吧。我那个是UTF-8的。你用DW改下编码就行了。
这个安装了下,
现在的问题是新建的可以增加缩略图,但是原来的不能增加缩略图,一修改就提示保存失败.
还有一个是新建的栏目,要修改下标题之类的,又提示保存失败.
希望大哥帮我看下哦.谢谢了
@小河 检查下数据库表是否添加字段了表设置是否有问题。然后在重新覆盖下后台程序文件。打包有下载。
显示的效果网站可以看下嘛
@港币汇率 一步一步按照步骤来,就可以了。
sql语句还是不能执行啊,是不是#@__的原因,为什么有两个_符号呢,#$是不是需要更改为自己数据库的前缀,还有其它的单引号用哪种格式,前几天本来找到一个网站可以复制执行的了,但是忘记收藏了,郁闷,现在又是这个问题.
@酒中仙 如果你的DEDE没有改字段前缀的话,就把#@__arctype改成dede_arctype在执行。
果然是高手! :grin: thanks!
奇怪,文件改掉后,图片可以添加,但是栏目一保存就出错,无法保存,还原修改可以保存,这是什么问题
@memento0705 看下你的数据库dede_arctype有没有typeimg这个字段。如果没有的话,保存是会报错的,后台执行下最上面的那个语句就行了。
辛苦了,我也出现保存错误。在数据库dede_arctype看不到typeimg,添加不进去,怎么回事啊
@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
@feng1650 alter table `dede_arctype` add `typeimg` varchar(200) NOT NULL default; 注意语句的完整性,在dedecms后台执行。
网盘失效了 需要绑定手机才能分享给大众的说 :!:
@拇指 哎呀,115比较坑啊! 现在已经弄好了。
复盖了,但是栏目在保存时提示:当前栏目更改时失败,请检查你的输入资料是否存在 这是什么问题!
@清越 alter table `dede_arctype` add `typeimg` varchar(200) NOT NULL default; 注意语句的完整性,在dedecms后台执行就可以了。你的数据库没有那个字段,所以会报错的。
感谢分享!
不过代码严重不规范 好多引号有错误 搞了变天都没搞好 最后才发现是引号错误引起的! 相当郁闷啊
建议博主修改一下,要不以后那些想我一下复制粘贴的人又要吃苦头了
@艳阳天 其实我也很郁闷呢。我本地是正确的,粘贴到WORDPRESS里就变成这样了,不晓得怎么改呢。
新建的栏目可以添加缩略图,可是无法保存,一保存就抱错。另外:数据库里有typeimg字段。
@syouketu 那应该是程序没有修改好。可以下载网盘里面文件覆盖就行了。
:!: 我按照步骤弄完后,添加图片,保存不了,提示“
保存当前栏目更改时失败,请检查你的输入资料是否存在问题”
@xvinda 请检查数据库是否有正确添加字段。
@雷雷 数据库中已有typeimg 这个字段,之前在网上看到别的办法可以保存,但是不能调出图片,看到您的方法后,尝试您的办法,但保存时出错。
@xvinda 请下载网盘附件文件,直接覆盖吧,记得编码要改成跟你的一样。http://pan.baidu.com/share/link?shareid=92052&uk=353171678
@雷雷 谢谢,成功了,我对比了你的和我的文件,最后终于找到问题了,竟然是'' 我的是‘’,谢谢你了。
@xvinda 遇到一样的问题,用的是5.7的版本,困扰几天了
@xvinda 遇到一样的问题,用的是5.7的版本,困扰几天了,不会真的是你文章说的标点符号的问题吧
目前最正规的版本,测试可用。感谢
博主:你好 DedeCMS V5.7 SP1正式版,无法执行alter table `dede_arctype` add `typeimg` varchar(200) NOT NULL default ;
已经解决 。。。。
添加图片是成功的,我想除了图片再添加几个栏目属性,结果就很难成功了。而且还出现了“保存目录数据时失败,请检查你的输入资料是否存在问题!”,请问如果解决啊?大神
@新手 一般出现“保存目录数据时失败,请检查你的输入资料是否存在问题!”是由于系统无法保存至数据库引起的,可能是数据库中没有这个字段。程序与数据库匹配就可以添加多个栏目属性。
@雷雷 我也遇到这个问题了,写入不到数据库你不会是数据库版本的问题吧,数据库字段添加成功了,data给了写入的权限,可就是保存不了
您好,雷雷博主,我按着您的方法,可以用sql来实现栏目略缩图功能,但无法直接调用,按着您上面的替换也试了,还是不行,换了其它方法也不行,望赐教;
@阿光 include/taglib/channel.lib.php文件改了吗?实在不行的话,网盘有源码提供下载哦。备份你下你原来的。然后覆盖掉。记得编码改成跟你一样的。
想按修改channel.lib.php的方法去修改channelartlist.lib.php 让channelartlist标签也拥有此功能(因为这标签可以选择所需要的栏目),但是没能成功,我就在相关的地方加了typeimg进去了,但是显示不出来,雷雷博方能帮帮忙吗?
@哉风 dede的栏目调用上下都是关联的。首先要sql读出来typeimg的字段值,下面在把值赋予标签。
channelartlist.lib.php的大概在78行左右sql查询typename字段后加上typeimg字段应该就可以了。具体没试过,你可以尝试下是否可行。
在dede:list中调不出来
{dede:list pagesize='10'}
[[field:typelink/]] [field:title/] [field:pubdate
function="GetDateTimeMK(@me)"/]
[field:description/]...
{/dede:list}
非常感谢雷雷!
非常感谢雷雷!
非常感谢雷雷!
非常感谢雷雷!
非常感谢雷雷!
非常感谢雷雷!
非常感谢雷雷!
成功执行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
这个是什么意思啊
@649472841 语句有误!
鎴愬姛鏇存敼涓€涓垎绫伙紒
如果你的浏览器没反应,请点击这里...
我更改栏目保存后,就提示这个?是什么原因,编码格式不一样吗?
@牧羊少年 是的,改成跟你的网站一样的编码就可以了。
不好用啊,请帮忙
@锐旗网 一般情况下有2个原因!dede_arctype的表没有增加typeimg字段,还有一个就是编码问题,检查一下吧。更改好的文件有打包下载,自行下载改下编码就行了。
@雷雷 博主你好,我的数据库里有字段而且图片也插进去了,但是调不出来
@百思不得其解 那应该是标签解析程序那里的问题吧,看看有没有读取img字段,实在不行,你下载下源文件替换吧!
为什么我的代码是这样的,跟楼主分享的不一样?该怎么改?
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 ";
}
为什么我发的那条代码没有了?