美浩工作室是一个以90后团队为主的网站设计,制作,优化,维护为一体的网站建设工作室,为您量身定制适合企业自身的网站,欢迎咨询:15249241469

dedecms通过标签TAG调用相关的文章的方法

dedecms二次开发 mihoweb 2314℃ 0评论

未标题-1dedecms通过标签调用相关文章,主要是通过标签tag以及 标签对应的文章,这样就可以最大限度的通过dedecms文章内容中的数据,调用相关文章。达到提高网站内容质量的效果。具体的代码如下.

  1. <?php   
  2. if(!defined(‘DEDEINC’)) exit(‘Request Error!’);   
  3. /*————————————–
  4. 按关键词关连文章的标签  
  5. eregtype属性   
  6. eregtype = keyword 只匹配关键字  
  7. eregtype = tag 只匹配tag  
  8. eregtype = all tag优先,不存在tag则匹配关键字  
  9. mytypeid=” 栏目ID,多个栏目用,隔开  
  10. —————————————*/  
  11. function lib_likearticle(&$ctag,&$refObj)   
  12. {   
  13. global $dsql;   
  14. //属性处理   
  15. $attlist=“row|12,titlelen|28,infolen|150,col|1,tablewidth|100,mytypeid|0,byabs|0,imgwidth|120,imgheight|90″;   
  16. FillAttsDefault($ctag->CAttribute->Items,$attlist);   
  17. extract($ctag->CAttribute->Items, EXTR_SKIP);   
  18. $revalue = ;   
  19. if(emptyempty($tablewidth)) $tablewidth = 100;   
  20. if(emptyempty($col)) $col = 1;   
  21. $colWidth = ceil(100/$col);   
  22. $tablewidth = $tablewidth.“%”;   
  23. $colWidth = $colWidth.“%”;   
  24.   
  25. $ids = array();   
  26. $tids = array();   
  27.   
  28. $typeid = ( !emptyempty($mytypeid) ? $mytypeid : 0 );   
  29. if(emptyempty($typeid))   
  30. {   
  31.    if(!emptyempty($refObj->Typelink->TypeInfos['reid'])) {   
  32.      $typeid = $refObj->Typelink->TypeInfos['reid'];   
  33.    }   
  34.    else {   
  35.      if(!emptyempty($refObj->Fields['typeid'])) $typeid = $refObj->Fields['typeid'];   
  36.    }   
  37. }   
  38. if( !emptyempty($typeid) && !ereg(‘,’, $typeid) ) {   
  39.    $typeid = GetSonIds($typeid);   
  40. }   
  41. if(!emptyempty($refObj->Fields['tags']) && $eregtype != ’keyword’ )   
  42. {   
  43.   $tags = explode(‘,’, addslashes($refObj->Fields['tags']));   
  44.                   
  45.   $getsql = “ tag like ’”.join(“‘ OR tag like ’”$tags).“‘ ”;   
  46.                   
  47.   $dsql->Execute(‘me’, “Select * From `#@__tagindex` where $getsql ”);   
  48.   while($arow = $dsql->GetArray(‘me’)) {   
  49.    $tids[] = $arow['id'];   
  50.   }   
  51.   $tid = join(‘,’, $tids);   
  52.   if($tid!=)   
  53.   {   
  54.    $dsql->Execute(“me”“Select aid From `#@__taglist` where tid in($tid) And arcrank > -1 group by aid order by aid desc limit 0, $row”);   
  55.    while($arow = $dsql->GetArray(“me”))   
  56.    {   
  57.     $ids[] = $arow['aid'];   
  58.                                 $arcid =  $refObj->Fields['aid'];   
  59.    }   
  60.   }   
  61. }   
  62. if($eregtype == ’tag’ && count($ids) == 0 )   
  63. {   
  64.   return ;   
  65. }   
  66. else  
  67. {   
  68.   if(count($ids) > 0)   
  69.   {   
  70.                  if(!emptyempty($typeid)) {   
  71.       $typeid = “ And arc.typeid in($typeid) And arc.id<>$arcid ”;   
  72.     }   
  73.    $idsStr = join(‘,’, $ids);   
  74.    $query = “Select arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,
  75.             tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath  
  76.             from `#@__archives` arc left join `#@__arctype` tp on arc.typeid=tp.id  
  77.             where arc.id in($idsStr) $typeid order by arc.id desc”;   
  78.   }   
  79.   else  
  80.   {   
  81. $limitRow = $row - count($ids);   
  82. $keyword = ;   
  83. if(!emptyempty($refObj->Fields['keywords']))   
  84. {   
  85.    $keywords = explode(‘,’ , trim($refObj->Fields['keywords']));   
  86.    $keyword = ;   
  87.    $n = 1;   
  88.    foreach($keywords as $k)   
  89.    {   
  90.       if($n > 3)  break;   
  91.       if(trim($k)==continue;   
  92.       else $k = addslashes($k);   
  93.       $keyword .= ($keyword== ? “ CONCAT(arc.keywords,’ ’,arc.title) like ’%$k%’ ” : “ OR CONCAT(arc.keywords,’ ’,arc.title) like ’%$k%’ ”);   
  94.        $n++;   
  95.    }   
  96. }   
  97. $arcid = (!emptyempty($refObj->Fields['id']) ? $refObj->Fields['aid'] : 0);   
  98. ifemptyempty($arcid) || $byabs==0 ) {   
  99.   $orderquery = “ order by arc.id desc ”;     
  100. }   
  101. else {   
  102.   $orderquery = “ order by ABS(arc.id - ”.$arcid.“) ”;   
  103.   }   
  104. if($keyword != )   
  105. {   
  106.     if(!emptyempty($typeid)) {   
  107.       $typeid = “ And arc.typeid in($typeid) And arc.id<>$arcid ”;   
  108.     }   
  109.     $query = “Select arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,
  110.             tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath  
  111.             from `#@__archives` arc left join `#@__arctype` tp on arc.typeid=tp.id  
  112.             where arc.arcrank>-1 and ($keyword)  $typeid $orderquery limit 0, $row”;   
  113. }   
  114. else  
  115. {   
  116.    if(!emptyempty($typeid)) {   
  117.      $typeid = “ arc.typeid in($typeid) And arc.id<>$arcid ”;   
  118.    }   
  119.    $query = “Select arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,
  120.             tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath  
  121.             from `#@__archives` arc left join `#@__arctype` tp on arc.typeid=tp.id  
  122.            where arc.arcrank>-1 and  $typeid $orderquery limit 0, $row”;   
  123.                    }   
  124.               }   
  125.            }   
  126. $innertext = trim( $ctag->GetInnerText() );   
  127. if($innertext==$innertext = GetSysTemplets(‘part_arclist.htm’);   
  128. $dsql->SetQuery($query);   
  129. $dsql->Execute(‘al’);   
  130.   $artlist = ;   
  131. if($col > 1) {   
  132.   $artlist = “<table width=’$tablewidth’ border=’0′ cellspacing=’0′ cellpadding=’0′>\r\n”;   
  133. }   
  134. $dtp2 = new DedeTagParse();   
  135. $dtp2->SetNameSpace(‘field’, ’[', ']‘);   
  136. $dtp2->LoadString($innertext);   
  137. $GLOBALS['autoindex'] = 0;   
  138. $line = $row;   
  139. for($i=0; $i < $line$i++)   
  140. {   
  141.   if($col>1) $artlist .= “<tr>\r\n”;   
  142.   for($j=0; $j < $col$j++)   
  143.   {   
  144.    if($col>1) $artlist .= “ <td width=’$colWidth’>\r\n”;   
  145.    if($row = $dsql->GetArray(“al”))   
  146.    {   
  147.     $ids[] = $row['id'];   
  148.     //处理一些特殊字段   
  149.     $row['info'] = $row['infos'] = cn_substr($row['description'],$infolen);   
  150.     $row['id'] =  $row['id'];   
  151.     if($row['corank'] > 0 && $row['arcrank']==0)   
  152.     {   
  153.       $row['arcrank'] = $row['corank'];   
  154.     }   
  155.     $row['filename'] = $row['arcurl'] = GetFileUrl($row['id'],$row['typeid'],$row['senddate'],$row['title'],$row['ismake'],   
  156.     $row['arcrank'],$row['namerule'],$row['typedir'],$row['money'],$row['filename'],$row['moresite'],$row['siteurl'],$row['sitepath']);   
  157.     $row['typeurl'] = GetTypeUrl($row['typeid'],$row['typedir'],$row['isdefault'],$row['defaultname'],$row['ispart'],   
  158.     $row['namerule2'],$row['moresite'],$row['siteurl'],$row['sitepath']);   
  159.     if($row['litpic'] == ’-' || $row['litpic'] == )   
  160.     {   
  161.      $row['litpic'] = $GLOBALS['cfg_cmspath'].’/images/defaultpic.gif’;   
  162.     }   
  163.     if(!eregi(“^http://”,$row['litpic']) && $GLOBALS['cfg_multi_site'] == ’Y')   
  164.     {   
  165.      $row['litpic'] = $GLOBALS['cfg_mainsite'].$row['litpic'];   
  166.     }   
  167.     $row['picname'] = $row['litpic'];   
  168.     $row['stime'] = GetDateMK($row['pubdate']);   
  169.     $row['typelink'] = “<a href=’”.$row['typeurl'].“‘>”.$row['typename'].“</a>”;   
  170.     $row['image'] = “<img src=’”.$row['picname'].“‘ border=’0′ width=’$imgwidth’ height=’$imgheight’ alt=’”.ereg_replace(“['><]“,“”,$row['title']).“‘>”;   
  171.     $row['imglink'] = “<a href=’”.$row['filename'].“‘>”.$row['image'].“</a>”;   
  172.     $row['fulltitle'] = $row['title'];   
  173.     $row['title'] = cn_substr($row['title'],$titlelen);   
  174.     if($row['color']!=$row['title'] = “<font color=’”.$row['color'].“‘>”.$row['title'].“</font>”;   
  175.     if(ereg(‘b’,$row['flag'])) $row['title'] = “<strong>”.$row['title'].“</strong>”;   
  176.     $row['textlink'] = “<a href=’”.$row['filename'].“‘>”.$row['title'].“</a>”;   
  177.     $row['plusurl'] = $row['phpurl'] = $GLOBALS['cfg_phpurl'];   
  178.     $row['memberurl'] = $GLOBALS['cfg_memberurl'];   
  179.     $row['templeturl'] = $GLOBALS['cfg_templeturl'];   
  180.        
  181.     if(is_array($dtp2->CTags))   
  182.     {   
  183.      foreach($dtp2->CTags as $k=>$ctag)   
  184.      {   
  185.       if($ctag->GetName()==’array‘) {   
  186.        $dtp2->Assign($k,$row);   
  187.       }   
  188.       else {   
  189.        if(isset($row[$ctag->GetName()])) $dtp2->Assign($k,$row[$ctag->GetName()]);   
  190.        else $dtp2->Assign($k,);   
  191.       }   
  192.      }   
  193.      $GLOBALS['autoindex']++;   
  194.     }   
  195.     $artlist .= $dtp2->GetResult().“\r\n”;   
  196.    }   
  197.    //if hasRow   
  198.    else  
  199.    {   
  200.     $artlist .= ;   
  201.    }   
  202.    if($col>1) $artlist .= “ </td>\r\n”;   
  203.   }   
  204.   //Loop Col   
  205.   if($col>1) $i += $col - 1;   
  206.   if($col>1) $artlist .= “ </tr>\r\n”;   
  207. }   
  208. //loop line   
  209. if($col>1) $artlist .= “ </table>\r\n”;   
  210. $dsql->FreeResult(“al”);   
  211. return $artlist;   
  212. }   
  213. ?>  

2.调用方法

  1. [code=Php width=600px]{dede:likearticle col='2' row='10' titlelen='42' eregtype=all|tag|keyword}    
  2.         <li><a href="[field:arcurl/]">[field:title/]</a></li>    
  3. {/dede:likearticle}[/code]  

 

如果您喜欢这篇文章,欢迎分享订阅。

转载请注明:美浩工作室官方博客 » dedecms通过标签TAG调用相关的文章的方法

喜欢 (2)