織夢dedecms系統首頁調用分類信息聯動類別(地區,類型等)的方法如下:
需要注意:這個方法只適用于dedecms V5.5,V5.6,V5.7
dede模板系統中默認是沒有辦法調用枚舉名(聯動菜單名稱)的,而只能調用枚舉值,為了方便大家在以后制作模板,今天就給大家帶來一個自定義的全局函數,有了這個函數,以后在調用聯動菜單的時候就非常方便了。
一、遇到問題描述
我們知道,聯動菜單它是保存到了附加表里,我們在arclist標簽中,要調用自定義附加表的字段,只能是通過:
{dede:arclist row='5' channelid='內容模型ID' addfields='自定義字段'}
insertext
{/dede:arclist}
這種方法來調用,比如以下這個實例:
{dede:arclist titlelen='60' row='8' channelid='1' addfields='nativeplace'}
<li><span>[field:nativeplace/]</span><a href="[field:arcurl /]">[field:title /]</a></li>
{/dede:arclist}
這個的意思是調用普通文章8條,并調用附加表中的nativeplace字段(注意:該字段是聯動類別),但是調用的結果就是枚舉值,是數字,不是地區。
二、解決方法
1)函數編寫
打開 /include/extend.func.php 文件(這個文件為自定義函數接口文件,若不存在,請自行創建),在最后一行的?>上添加如下代碼:
function Getsysenum($fields){
global $dsql;
$row = $dsql->GetOne("select * from dede_sys_enum where evalue = '".$fields."'");
if(!is_array($row)){
return "<font color='red'>聯動類別不存在</font>";
}
else{
return $row['ename'];
}
}
保存關閉即可!
2)函數調用
這個函數的調用非常簡單,只需要將“枚舉值”傳遞過來即可,這個緩存組名通常也就是內容模型中的自定義聯動菜單字段名:
function Getsysenum(‘枚舉值');
3)調用實例
我們來看一下調用的實例代碼:
{dede:arclist titlelen='60' row='8' channelid='1' addfields='nativeplace'}
<li><span>[field:nativeplace function="Getsysenum(@me)"/]</span><a href="[field:arcurl /]">[field:title /]</a></li>
{/dede:arclist}
其中[field:nativeplace function="Getsysenum(@me)"/] 就是將nativeplace字段進行Getsysenum函數處理。
這樣就可以解決這個調用的問題了。