ssw6618

新闻资讯

时时了解最新动态

上海网站制作根据tag获取相关文章列表功能实

2020-06-12  


亲测无误,适合dede5.7版本。
上海网站制作在织梦的文章里,很多人都是只填了TAG,而没有填写关键字,更不要说手动去设置其相关文章了。因此,就希望有一个功能,可以列出当前文章相同TAG的相关文章。
举个例子:A文章的tag是“股票 金融 照片”,B文的TAG是“美女 时尚”,C文的TAG是“美女 照片”,D文的tag是“股票 贬值”,那么A文章用次此修改后得到的相关文章就是C和D,B文的相关文章是C,C文的相关文章是A和B,D文相关文章是A
修改方法为以下两步(已在DEDE5.7 GBK版上调试通过,如果你是要修改UTF-8版本,切记不要用记事本打开织梦自带的文件):
第一步:在includecommon_func.php文件的最后?>之前,插入以下函数代码
 
 
function ShowTagLikeArc_by_id($titleLen,$rowCount,$typeid,$aid){
   global $dsql; //原来定义为$dsql = new DedeSql(false);结果数据库查询不到任何值
   if ($typeid!="0") $sql = TypeGetSunID($typeid,$dsql);
   else $sql =" 1=1 ";  
  
   //找到所有的tag id
   $query="Select tid from dede_taglist   where aid=$aid";
   $dsql->SetQuery($query);
   $dsql->Execute();
   while($row=$dsql->GetObject()){
       $kwsqlarr[] = " (tl.tid='".$row->tid."') ";
   }
   $where = implode(' OR ',$kwsqlarr);  
   if (trim($where)=="") $where=" 1<>1 ";
   $sql="Select DISTINCT tp.namerule,tp.typedir,dede_archives.* From dede_taglist   tl left join dede_archives on tl.aid=dede_archives.id   left join dede_arctype tp on dede_archives.typeid=tp.id where {$sql} and ( $where) and   dede_archives.ID<>$aid order by dede_archives.litpic desc,dede_archives.click desc"; //排序按有缩略图、点击率高的排名靠前。注:原语句中id为ID,结果导致无法获取值
   $dsql->SetQuery($sql);
   $dsql->Execute();
   $ss="";
   $i=0;
   while($row=$dsql->GetObject()){
         $url=GetFileUrl($row->id,$row->typeid,$row->senddate,$row->title,$row->ismake,$row->arcrank,$row->namerule,$row->typedir,$row->money);                              
         $ss=$ss."<li><a href='".$url."' title='".$row->title."'>";
         if ($titleLen!=0) $ss=$ss.cn_substr($row->title,$titleLen);
         else $ss=$ss.$row->title;
         $ss=$ss."</A></LI>";        
         $i++;
         if (($rowCount!=0)&&($i>=$rowCount)) return $ss;
   }  
   if ($ss=="") $ss="暂无相关文章";
   return $ss;
}
 
 
第二步:在文章内容页模板(通常是article_article.htm,只能使用在文章页面)里,加入调用此函数的标签:
   例如:{dede:field.id function='ShowTagLikeArc_by_id(20,10,0,@me)' /}  注:dede:field name='ID' 使得@me传递的值为空
                 这个标签的意思就是:从所有栏目里,查找本篇文章的tag相关文章,一共找10条,标题显示最长为20个字
   又如:{dede:field.id function='ShowTagLikeArc_by_id(0,0,2,@me)' /}  
                 这个标签的意思就是:从ID为2栏目及其所有子栏目里,查找本篇文章的tag相关文章,不限制文章数量,标题显示不限字数
附注:
   1   生成出来的相关文章HTML形如:
               <li><a href="/html/xxxx/CCC.html" title="C文标题">C文标题</a></li>
                             <li><a href="/html/xxxx/aaa.html" title="D文标题">D文标题</a></li>
           如果你的模板有样式方面的要求,可自行调整代码里的<li>部分
   2   目前得到的相关文章,是按有缩略图且点击率高的拍列靠前,如需有自己的排序要求,请修改代码里的order by dede_archives.litpic desc,dede_archives.click desc部分,不懂的请查阅跟帖或跟贴提问  
——————————————————————————————————————————————
温馨提示:
*   本修改,需要具备一定的模板和HTML的基础知识,如果完全没有这些基础知识,在修改模板使用标签时会遇到一定困难,请不要使用QQ问我,因为我也很难帮助你,也没有足够的时间帮助你,这就好比小学生遇到初中题目一样,需要你自己把基础知识进行学习和摸索
*   模板文件通常在template/default目录里,文章页的模板叫article_article.htm,且本拓展修改的标签,只能放在文章内容页。


声明:本站转载自网络,版权归原作者所有,文章所述观点并非翼好网络的观点,如有侵权请第一时间联系我们时间进行删除。翼好网络是一家正规的上海网站建设公司,欢迎前来咨询建站业务!