比如公告栏目本身包含新闻及商品两个相关栏目,在后台设置为相关后,在公告的前台列表页中,我可以自动调用相关的栏目名称,链接,及下属的文章列表.这里其实有两个调用循环,先循环调用本栏目的相关栏目,然后,根据得到的栏目typeid,再循环调用该栏目下的文章内容.里面的难点是怎么得到文章的静态链接
我首先需要在dede_arctype这个栏目表中,增加一个typelist字段,表示相关栏目.字段内容为 新闻及商品栏目的id,多个用逗号分开.
效果图,后台先设置好公告栏目的相关栏目. (在栏目管理中,添加关联栏目的ID)
后台,文章内容归类
前台效果
然后,在模板中增加
- {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 dede_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 dede_archives a, dede_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 dede_archives a ,dede_arctype t , dede_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 dede_arctype where id='$typeid'");
- return $rs;
- }
收藏