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

Posted baker95935

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dedecms5.7文章页的标签随机插入到内容中并且标签的地址为其标签关联的其他文章地址相关的知识,希望对你有一定的参考价值。

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文章页的标签随机插入到内容中并且标签的地址为其标签关联的其他文章地址的主要内容,如果未能解决你的问题,请参考以下文章

Dedecms5.7搜索结果页空白无内容的解决方法

最新织梦dedecms模板调用标签大全(适用dedecms5.7)

DEDECMS5.7支持伪静态的方法

DEDECMS5.7支持伪静态的方法

织梦建站系统的模版怎么调用文章页的标签、关键字、描述呀,注意是文章页,不是内容页,内容页的代码我知

织梦Dedecms5.7为何不能设置采集软件频道,进入后台只有文章和图片采集,怎么办?