• 技术文章 >CMS教程 >DEDECMS

    织梦cms怎么增加栏目图片

    藏色散人藏色散人2023-03-14 10:42:30原创111

    织梦cms增加栏目图片的方法:1、把要添加栏目图片字段取名为“typeimg”,执行代码为“alter table dede_arctype add typeimg varchar(100)”;2、修改“catelog_add.php”和“catelog_edit.php”文件内容;3、使用channel标签调用栏目,然后获取当前栏目的最顶级的栏目图片即可。

    本教程操作环境:Windows10系统、DedeCMS 5.7版、Dell G3电脑。

    织梦cms怎么增加栏目图片?

    dedecms(织梦CMS)后台添加栏目图片的代码方法

    网上的方法虽然对,但有一些细节没处理好,很多新手都会遇到问题。接下来我来总结一下吧。

    第一步、首先我们把要添加栏目图片字段我这里取字段名为typeimg,您可以在后台添加代码,执行代码,操作如下:
    “系统->SQL命令工具” , 插入sql语句
    alter table dede_arctype add typeimg varchar(100)
    第二步:进入后台管理文件目录(默认为:dede目录),找到”catelog_add.php“下有几处要修改的。
    1.找到$queryTemplate(大概65行左右)
    我改的代码如下:

    $queryTemplate = "INSERT INTO `#@__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 `#@__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 `#@__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 `#@__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 `#@__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 `#@__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)/}">

    这样就可以调用了。完美!!

    第二种方法:
    修改文件include/common.func.php
    在最后增加一个函数就行了,如下:

    //获取顶级栏目的栏目图片 李国平更新于2021.3.11
    function GetTopTypeimg($id)
    {
    global $dsql;  
    $row = $dsql->GetOne("SELECT typeimg,topid FROM dede_arctype WHERE id= $id");
    if ($row['topid'] == '0') 
    { 
    return $row['typeimg'];  
    } 
    else 
    { 
    $row1 = $dsql->GetOne("SELECT typeimg FROM dede_arctype WHERE id= $row[topid]"); 
    return $row1['typeimg']; 
    } 
    }

    前台调用方法为:

    <img src="{dede:field name='typeid' function="GetTopTypeimg(@me)" /}">

    这样也可以调用了。完美!!

    推荐学习:dedecms教程

    以上就是织梦cms怎么增加栏目图片的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:织梦CMS
    上一篇:织梦cms忘记密码怎么办 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 织梦CMS能建小程序吗• 织梦cms可以上传视频吗• 织梦cms备案号位置怎么更改• 织梦cms忘记密码怎么办
    1/1

    PHP中文网