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}