我们在使用DEDECMS制作文章页或者列表页模板时候,都希望在页面中显示和内容有关的标题或者专题内容,当然显示相关文章的标题这个功能是DEDECMS标签已经自带了的,今天主要是讲如何在DEDECMS文章模板中调用和内容有关的专题标题,这个我们需要修改DEDECMS相关的PHP文件来实现。

打开include/extend.func.php,在最后添加:

 

  1. function getlikespc($keywords=0)  
  2.     {  
  3.         global $cfg_basehost,$dsql;  
  4.         $key = array();  
  5.         $key = explode(",",$keywords);  
  6.         $likesql = '';  
  7.         $len =count($key);  
  8.         for($i=0;$i<$len;$i++){  
  9.             $now = $len-$i;  
  10.             if($now==1){  
  11.                 $likesql .= "keywords like '%".$key[$i]."%' ";  
  12.             }else{  
  13.                 $likesql .= "keywords like '%".$key[$i]."%' or ";  
  14.             }  
  15.         }  
  16.         //关键字分割检索,拼接 查询语句  
  17.         $getsql = "SELECT * from  dede_archives where dede_archives.channel='-1'and $likesql order by  dede_archives.id limit 0,4 ";  
  18.         //查询与该文章关键字相同的专题  
  19.         //echo $getsql;  
  20.         $toback = '';  
  21.         $dsql->Execute("m",$getsql);  
  22.         while($row = $dsql->GetObject('m'))  
  23.         {  
  24.             $title = $row->shorttitle;  
  25.              //专题短标题   
  26.             $id = $row->id;  
  27.             //专题ID  
  28.             $url=GetOneArchive($id);  //这个函数可以根据传进来的文档ID获取其URL地址  
  29.             $aurl = $url['arcurl'];  
  30.             $toback .= "<a href='".$aurl."' >".$title."</a>";  
  31.         }  
  32.         //print_r($toback);  
  33.         //exit();  
  34.         return $toback;  
  35.           
  36.         //返回文章链接  
  37.         } 

然后如果在内容页调用直接用:

 

  1. {dede:field.keywords function='getlikespc(@me)'/}   

列表和专题的节点一般用这样的格式调用:

 

  1. [field:keywords function='getlikespc(@me)'/]