織夢dedecms在欄目頁呼叫其它相關欄目的資訊及相關欄目下的文章列表
阿新 • • 發佈:2019-01-03
比如公告欄目本身包含新聞及商品兩個相關欄目,在後臺設定為相關後,在公告的前臺列表頁中,我可以自動呼叫相關的欄目名稱,連結,及下屬的文章列表.這裡其實有兩個呼叫迴圈,先迴圈呼叫本欄目的相關欄目,然後,根據得到的欄目typeid,再迴圈呼叫該欄目下的文章內容.裡面的難點是怎麼得到文章的靜態連結
我首先需要在dede_arctype這個欄目表中,增加一個typelist欄位,表示相關欄目.欄位內容為 新聞及商品欄目的id,多個用逗號分開.
效果圖,後臺先設定好公告欄目的相關欄目.
後臺,文章內容歸類
前臺效果
然後,在模板中增加
這裡是公告欄目列表頁<br/>
{dede:type }[field:id function='get_typelist(@me)'/]{/dede:type}
get_typelist()這個為在include/extend.func.php 中自定義的函式,內容為
function get_typelist($typeid){
global $dsql;
$rs=$dsql->getOne("select * from #@__arctype where id='$typeid'");
$arrs=explode(",",$rs['typelist']);
$typelist='' ;
//欄目迴圈開始
foreach($arrs as $v){
$get_types=get_types($v);
$typedir=str_replace('{cmspath}','',$get_types['typedir']);
$typelist.='<br/><a href="'.$typedir.'">'.$get_types['typename'].'</a>';
//文章迴圈開始
$sql="select a.id as aid, t.id as tid,typeid,senddate,title,ismake,arcrank,namerule,typedir From #@__archives a, #@__arctype t where a.typeid = t.id and a.typeid = '$v' and a.arcrank>-1 order by a.id desc limit 10" ;
//如果有自定義欄位,需要三個表聯合查詢,可能有重複的資料.需要加上group by 如下面的寫法
//$sql="select s.* ,a.id as aid, t.id as tid,senddate,title,ismake,arcrank,namerule,typedir From #@__archives a ,#@__arctype t , #@__addonshangpin s where a.typeid = t.id and s.typeid = t.id and a.typeid = '$v' and a.arcrank>-1 group by a.id order by a.id desc limit 10";
// print_r($sql);exit;
$dsql->SetQuery($sql);
$dsql->Execute();
$list='';
while($row = $dsql->GetArray()){
$list.= '<li><a title="'.$row['title'].'" href="'.GetFileUrl($row['aid'],$row['typeid'],$row['senddate'],$row['title'],$row['ismake'],$row['arcrank'],$row['namerule'],$row['typedir'],$row['money']).'">'.cn_substr($row['title'], 50).'</li>';
}
$typelist=$typelist.$list;
}
return $typelist;
}
//織夢根據欄目編號typeid呼叫typename欄目名 ,url等
function get_types($typeid){
global $dsql;
$rs=$dsql->getOne("select typename,typedir from #@__arctype where id='$typeid'");
return $rs;
}