織夢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;
這樣就可以呼叫了。完美! !
第二種方法:
修改檔案include/common.func.php
最後增加一個函數就行了,如下:
<img src="{dede:field.typeid function=gettoptype(@me,images)/}">
前台呼叫方法為:
//获取顶级栏目的栏目图片 李国平更新于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教學
以上是織夢cms怎麼增加欄位圖片的詳細內容。更多資訊請關注PHP中文網其他相關文章!