織夢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>欄目圖片:</td> <td> <input><input> </td> <input> </tr>
catalog_edit.htm中加入如下代碼
<!--加入欄目--> <tr> <td>欄目圖片:</td> <td> <input>"?/> <input> </td> <input> </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?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,typeimg ??????????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,typeimg ????????????FROM?`#@__arctype`?WHERE?reid='$reid'?And?ishidden1?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> @@##@@</li>{/dede:channel}
以上這段代碼是網上的,我要的不是這樣的效果,我要是獲取當前欄目的最頂級的欄目圖片
我用二種方法來解決這個問題:
本人測試有效
第一種:
修改文件include/helpers/extend.helper.php
找到gettoptype函數,在里面增加如下代碼,目的是獲取欄目圖片
//增加欄目圖片 $toptypeimg=$row['typeimg']; if($action="images")?return?$toptypeimg;
前臺調用方法:
@@##@@
這樣就可以調用了。完美!!
第二種方法:
修改文件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'];? }? }
前臺調用方法為:
@@##@@
這樣也可以調用了。完美!!
推薦學習:dedecms教程