dedecms后台添加栏目icon图片和网站logo的代码方法

  • 一一得一
  • 技术分享
  • Apr 20, 2022

一、dedecms后台添加上传logo

在后台--系统参数添加变量--支持变量类型有:文本、数字 、布尔(Y/N) 、多行文本 。
但是没有图片变量类型,我们可以通过代码实现支持图片类型。
dedecms后台logo

具体步骤:

打开/dede/templets/sys_info.htm
找到
 
<script language="javascript" src="../include/js/dedeajax2.js"></script>
 
<script language="javascript" src="../include/js/jquery/jquery.js"></script>
在下方添加:
 
<script language="javascript" src="js/main.js"></script>
继续找
 
<input type="radio" name="vartype" value="bstring" class='np' />多行文本</td>
改成
 
<input type="radio" name="vartype" value="bstring" class='np' />多行文本
 
<input type="radio" name="vartype" value="pic" class='np' />图片
 
</td>
找到
 
echo "<input type='text' name='edit___{$row['varname']}' id='edit___{$row['varname']}' value='{$row['value']}' style='width:30%'>";
在下方添加
 
}else if($row['type']=='pic')
 
 
{
 
 
echo "<table><tbody><tr><td><input type='text' name='edit___{$row['varname']}' id='edit___{$row['varname']}' value='{$row['value']}' style='width:250px;'></td>
<td><input type='button' name='set9' value='浏览... 'class='coolbg np' style='width:60px' onClick="."SelectImageN('form1.edit___{$row['varname']}','','idd_{$row['varname']}');"." /></td>
";
 
 
if($row['value']){
 
 
echo "<td><img src=".$row['value']." style='max-width:150px;max-height: 100px;' id='idd_{$row['varname']}' ></td></tr></tbody></table>";
 
 
}else{
 
 
echo "<td><img src='images/pview.gif' style='max-width:150px;max-height: 100px;' id='idd_{$row['varname']}'></td></tr></tbody></table>";
 
 
}

 
到这里就可以实现后台自定义添加logo图片。


 

二、栏目添加icon图片功能


第一步、首先我们把要添加栏目图片字段我这里取字段名为typeimg,您可以在后台添加代码,执行代码,操作如下:
“系统->SQL命令工具” , 插入sql语句
 
alter table dede_arctype add typeimg varchar(100)
 
第二步:进入后台管理文件目录(默认为:dede目录),找到”catelog_add.php“下有几处要修改的。
1.找到$queryTemplate(大概65行左右)
我改的代码如下:
 
$queryTemplate = "INSERT INTO `dede_arctype`(reid,topid,sortrank,typename,typedir,isdefault,defaultname,issend,channeltype,
    tempindex,templist,temparticle,modname,namerule,namerule2,ispart,corank,description,keywords,seotitle,moresite,siteurl,sitepath,ishidden,`cross`,`crossid`,`content`,`smalltypes`,`typeimg`)
    VALUES('~reid~','~topid~','~rank~','~typename~','~typedir~','$isdefault','$defaultname','$issend','$channeltype',
    '$tempindex','$templist','$temparticle','default','$namerule','$namerule2','0','0','','','~typename~','0','','','0','0','0','','','~typeimg~')";
 
2.找到 $in_query(227行左右)
 
修改整个$in_query
 
$in_query = "INSERT INTO `dede_arctype`(reid,topid,sortrank,typename,typedir,isdefault,defaultname,issend,channeltype,
    tempindex,templist,temparticle,modname,namerule,namerule2,
    ispart,corank,description,keywords,seotitle,moresite,siteurl,sitepath,ishidden,`cross`,`crossid`,`content`,`smalltypes`,`typeimg`)
    VALUES('$reid','$topid','$sortrank','$typename','$typedir','$isdefault','$defaultname','$issend','$channeltype',
    '$tempindex','$templist','$temparticle','default','$namerule','$namerule2',
    '$ispart','$corank','$description','$keywords','$seotitle','$moresite','$siteurl','$sitepath','$ishidden','$cross','$crossid','$content','$smalltypes','$typeimg')";
 
其实没什么难的,新手可以复制粘贴,老手可以自行修改,就是在语句中添加一个typeimg字段而已。
第三步:同样的方法,找到”catelog_edit.php“下$upquery(38行左右)
修改代码如下
 
$upquery = "UPDATE `dede_arctype` SET
     issend='$issend',
     sortrank='$sortrank',
     typename='$typename',
     typedir='$typedir',
     isdefault='$isdefault',
     defaultname='$defaultname',
     issend='$issend',
     ishidden='$ishidden',
     channeltype='$channeltype',
     tempindex='$tempindex',
     templist='$templist',
     temparticle='$temparticle',
     namerule='$namerule',
     namerule2='$namerule2',
     ispart='$ispart',
     corank='$corank',
     description='$description',
     keywords='$keywords',
     seotitle='$seotitle',
     moresite='$moresite',
     `cross`='$cross',
     `content`='$content',
     `crossid`='$crossid',
`typeimg`='$typeimg',
     `smalltypes`='$smalltypes'
     $uptopsql
    WHERE id='$id' ";
 
第四步:进入后台管理文件目录(默认为:dede目录)/templets/ 下的 “catalog_add.htm 和 catalog_edit.htm" 文件,在间加入下面代码:
 
<script language='javascript' src="js/main.js"></script>
 
catalog_add.htm 中加入如下代码
 
<!--加入栏目-->
<tr>
<td class="bline" height="26" style="padding-left:10px;">栏目图片:</td>
<td class="bline">
<input type="text" name="typeimg" id="imgmm" style="width:300px" class="text" />
<input name="imgmm_bt" type="button" class="inputbut" value="浏览..." onclick="SelectImage('form1.imgmm','big')" />
</td>
<input type="hidden" name="dede_addonfields" value="imgmm,img" />
</tr>
 
catalog_edit.htm中加入如下代码
 
<!--加入栏目-->
<tr>
<td class="bline" height="26" style="padding-left:10px;">栏目图片:</td>
<td class="bline">
<input type="text" name="typeimg" id="imgmm" style="width:300px" class="text" value="<?php echo $myrow['typeimg']?>" />
<input name="imgmm_bt" type="button" class="inputbut" value="浏览..." onclick="SelectImage('form1.imgmm','big')" />
</td>
<input type="hidden" name="dede_addonfields" value="imgmm,img" />
</tr>
 
注意:这二个文件的代码不一样,要分别加入。
 
第五步:如果使用通边 channel 标签调用栏目,所以要对/include/taglib/channel.lib.php文件进行更改,找到如下代码进行替换
 
    if($type=='top')
    {
        $sql = "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,typeimg
          From `dede_arctype` WHERE reid=0 And ishidden<>1 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,typeimg
          From `dede_arctype` WHERE reid='$typeid' And ishidden<>1 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,typeimg
            FROM `dede_arctype` WHERE reid='$reid' And ishidden<>1 order by sortrank asc limit 0, $line ";
    }
 
其实就是在sql语句里面添加了typeimg字段。
第六步,就是在前台调用了
 
{dede:channel type='self' typeid='15' row='8' currentstyle="<li><a href='~typelink~' class='thisclass'>~typename~</a> </li>"}
<li><a href='[field:typelink/]'>[field:typename/]</a> <img src='[field:typeimg/]' /></li>
{/dede:channel}
 
以上这段代码是网上的,我要的不是这样的效果,我要是获取当前栏目的最顶级的栏目图片
 
我用二种方法来解决这个问题:
本人测试有效
第一种:
修改文件include/helpers/extend.helper.php
找到gettoptype函数,在里面增加如下代码,目的是获取栏目图片
 
//增加栏目图片
$toptypeimg=$row['typeimg'];
if($action="images") return $toptypeimg;
 
前台调用方法:
 
<img src="{dede:field.typeid function=gettoptype(@me,images)/}">
 
这样就可以调用了。

打赏