比如公告栏目本身包含新闻及商品两个相关栏目,在后台设置为相关后,在公告的前台列表页中,我可以自动调用相关的栏目名称,链接,及下属的文章列表.这里其实有两个调用循环,先循环调用本栏目的相关栏目,然后,根据得到的栏目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;
}