织梦Dedecms调用其它栏目相关文章信息的方法

时间:2021-11-23
类别:教程 - CMS教程

比如公告栏目本身包含新闻及商品两个相关栏目,在后台设置为相关后,在公告的前台列表页中,我可以自动调用相关的栏目名称,链接,及下属的文章列表.这里其实有两个调用循环,先循环调用本栏目的相关栏目,然后,根据得到的栏目typeid,再循环调用该栏目下的文章内容.里面的难点是怎么得到文章的静态链接 

我首先需要在dede_arctype这个栏目表中,增加一个typelist字段,表示相关栏目.字段内容为 新闻及商品栏目的id,多个用逗号分开. 

效果图,后台先设置好公告栏目的相关栏目. (在栏目管理中,添加关联栏目的ID)

后台,文章内容归类

织梦Dedecms调用其它栏目相关文章信息的方法

前台效果

织梦Dedecms调用其它栏目相关文章信息的方法

然后,在模板中增加

  1. {dede:type}[field:id function='get_typelist(@me)'/]{/dede:type} 

get_typelist()这个为在include/extend.func.php 中自定义的函数,内容为

  1. function get_typelist($typeid){ 
  2.  global $dsql;   
  3.     $rs=$dsql->getOne("select * from dede_arctype where id='$typeid'");  
  4.         $arrs=explode(",",$rs['typelist']);   
  5.  
  6.         $typelist=''
  7.  
  8.  
  9.         //栏目循环开始 
  10.         foreach($arrs as $v){ 
  11.         $get_types=get_types($v); 
  12.  
  13.         $typedir=str_replace('{cmspath}','',$get_types['typedir']); 
  14.         $typelist.='<br/><a href="'.$typedir.'">'.$get_types['typename'].'</a>'
  15.  
  16.  
  17.         //文章循环开始 
  18.         $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"
  19.         //如果有自定义字段,需要三个表联合查询,可能有重复的数据.需要加上group by 如下面的写法 
  20.         //$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"; 
  21.     //  print_r($sql);exit; 
  22.         $dsql->SetQuery($sql);   
  23. $dsql->Execute();    
  24.  $list='';   
  25. while($row = $dsql->GetArray()){  
  26. $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>';   
  27. $typelist=$typelist.$list
  28.  
  29.         } 
  30.         return $typelist;   
  31.  
  32. }   
  33. //织梦根据栏目编号typeid调用typename栏目名 ,url等  
  34. function get_types($typeid){   
  35.     global $dsql;   
  36.     $rs=$dsql->getOne("select typename,typedir from dede_arctype where id='$typeid'");   
  37. return $rs;   
  38. }   

 

    收藏