码迷,mamicode.com
首页 > 其他好文 > 详细

dedecms5.7文章页的标签随机插入到内容中并且标签的地址为其标签关联的其他文章地址

时间:2019-10-17 21:44:46      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:ret   uniq   lis   archive   run   als   global   templates   url   

dedecms5.7文章页的标签随机插入到内容中并且标签的地址为其他标签关联的文章地址

 

1 添加2个自定义函数

在dede/include/extend.func.php底部 添加如下代码

//根据文章ID 获取文章的标签  然后根据标签随机获取不是本地址的文章地址
function gettaglink($aid) 
{
    global $lit_imglist,$dsql;
    
    //思路整理 先根据文章ID  找标签ID  然后根据标签ID 找到不包括自己的文章ID 然后随机获取一个文章ID 
      $dsql->SetQuery("SELECT tid FROM `#@__taglist` WHERE aid = ‘{$aid}‘ ");
    $dsql->Execute();
    $ids = ‘‘;
    while($row = $dsql->GetArray())
    {
         $ids .= ( $ids==‘‘ ? $row[tid] : ,.$row[tid] );
    }
   
    if($ids != ‘‘)
    {
    $addsql = " WHERE tid IN($ids) and aid!=".$aid;
    }
 
      $dsql->SetQuery("SELECT aid FROM `#@__taglist`  {$addsql}  ");
    $dsql->Execute();
    $ads = array();
    while($row = $dsql->GetArray())
    {
         $ads[]=$row[aid];
    }
    //去重
    $ads=array_unique($ads);
 
    //随机获取一个
    $rand=array_rand($ads);
    //文章ID
    $realaid=$ads[$rand];
    $artinfo=GetOneArchive($realaid);
    //文章链接
    return $artinfo[arcurl];
}

function gettagandlink($aid) 
{
    global $lit_imglist,$dsql;
    //思路整理 先根据文章ID  找标签ID  然后根据标签ID 找到不包括自己的文章ID 然后随机获取一个文章ID 
      $dsql->SetQuery("SELECT tid FROM `#@__taglist` WHERE aid = ‘{$aid}‘ ");
    $dsql->Execute();
    $ids = ‘‘;
    while($row = $dsql->GetArray())
    {
         $ids .= ( $ids==‘‘ ? $row[tid] : ,.$row[tid] );
    }
 
    if($ids != ‘‘)
    {
    $addsql = " WHERE id IN($ids)";
    }
 
    $dsql->SetQuery("SELECT * FROM `#@__tagindex` $addsql   LIMIT 0,3");
    $dsql->Execute();
     
    $res=‘‘;
    while($row = $dsql->GetArray())
    {
        $tmp[][tag] = dede_htmlspecialchars($row[tag]);
    }
 
    foreach($tmp as $k=>&$v) {
        $link=gettaglink($aid);
        if($link) {
            $res .="<a href=‘".$link."‘ target=_blank>".$v[tag]."</a>,";
        }
    }
 
      return $res; 
}

 

2 在文章详情模板

dede/templates/default/article_article.htm 的 {dede:field.body/} 替换为

  {dede:field.id runphp=yes}$GLOBALS[id] = @me;{/dede:field.id}
      {dede:field.body runphp=yes}
      $id=$GLOBALS[id];
      $str=@me;
      $length=strlen($str);
      $start=rand(0,$length);
      $end=$length-$start;
      $startstr=cn_substr(Html2text($str),$start,0);
      $middlestr=gettagandlink($id);
      $endstr=cn_substr(Html2text($str),$end,$start);
      $real=$startstr.$middlestr.$endstr;
      @me=$real;
      {/dede:field.body}

 

dedecms5.7文章页的标签随机插入到内容中并且标签的地址为其标签关联的其他文章地址

标签:ret   uniq   lis   archive   run   als   global   templates   url   

原文地址:https://www.cnblogs.com/baker95935/p/11695119.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!