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(,$length);
$end=$length-$start;
$startstr=cn_substr(Html2text($str),$start,);
$middlestr=gettagandlink($id);
$endstr=cn_substr(Html2text($str),$end,$start);
$real=$startstr.$middlestr.$endstr;
@me=$real;
{/dede:field.body}

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

  1. JAVAWEB开发之JSTL标签库的使用、 自己定义EL函数、自己定义标签(带属性的、带标签体的)

    JSTL  JSTL简单介绍: JSTL的全称:JSP Standard Tag Library,JSP标准标签库 JSTL的作用:   提供给Java Web开发者一个标准通用的标签函数库   和E ...

  2. dedecms5.7文章页替换掉特定标志的图片链接

    dedecms5.7文章页的替换掉特定标志的图片链接 解决思路 1个是在数据库里面执行替换操作 我自己查看 织梦后台也有这个功能  但是执行了一次 效果不是很好  那么就用下面的  在模板中进行内容替 ...

  3. 织梦dedecms首页、列表页、文章页文章点击浏览次数实时调用方法

    首先呢,先在根目录 /plus 目录下找到count.php  复制一份然后命名为viewclick.php(你也可以命名为你容易理解的名字)用编辑器将viewclick.php打开然后删除以下几行代 ...

  4. dedecms 文章页图片改为绝对路径

    这几天在网站改版,想把网站做大,想做频道页二级域名,于是在做网站的过程中发现一个问题,dedecms开设二级域名后,在二级域名的文章页无法显示图片,查看源代码后发现问题,由于dedecms文章页中的图 ...

  5. 如何修改 Discuz 门户文章页默认视频大小

    在 Discuz 系统中,论坛插入 Flash 等可以输入自定义的尺寸,但是门户文章页不可以修改.经过一番研究,找到了修改门户文章页默认视频大小的方法如下,希望对你有用:找到:/source/func ...

  6. dede list列表页和文章页分别使用if else

    标签: dede 2015-01-25 19:33 755人阅读 评论(0) 收藏 举报 分类: [ Dede ](20) 版权声明:本文为博主原创文章,未经博主允许不得转载. list列表页中使用i ...

  7. 修改织梦默认栏目页、文章页URL命名规则,简化目录结构

    版权声明:本文为博主原创文章,未经博主允许不得转载. 用织梦Dedecms建站,建议优化系统默认的URL结构,这样能简化网站目录深度,利于搜索引擎收录. 现在织梦的默认文章命名规则是 {typedir ...

  8. DedeCMS织梦文章页图片地址为绝对路径实现方法

    {dede:field.body function='replaceurl(@me)'/} 余斗博客改版后增加了一个m站点即手机站点,用二级域名实现,在做手机站的过程中发现一个问题,手机站和pc站都是 ...

  9. 帝国cms文章页调用当前文章URL如何操作?

    前面我们讨论过dedecms文章页调用地址(当前文章URL)如何操作,作为同台竞技的帝国cms也能在文章页调用当前文章URL吗?答案是肯定的!那就随ytkah一起来探索一下吧 帝国cms模板是在后台直 ...

随机推荐

  1. python基础(27):类成员的修饰符、类的特殊成员

    1. 类成员的修饰符 类的所有成员在上一步骤中已经做了详细的介绍,对于每一个类的成员而言都有两种形式: 公有成员,在任何地方都能访问 私有成员,只有在类的内部才能方法 私有成员和公有成员的定义不同:私 ...

  2. python基础(15):内置函数(一)

    1. 内置函数 什么是内置函数? 就是python给你提供的,拿来直接⽤的函数,比如print,input等等,截⽌到python版本3.6.2 python⼀共提供了68个内置函数.他们就是pyth ...

  3. 深入理解JVM,7种垃圾收集器

    本人免费整理了Java高级资料,一共30G,需要自己领取.传送门:https://mp.weixin.qq.com/s/JzddfH-7yNudmkjT0IRL8Q 如果说收集算法是内存回收的方法论, ...

  4. E203 CSR寄存器

    RiscV架构则定义了一些控制和状态寄存器(CSR),用于配置或记录一些运行的状态.CSR寄存器是处理器内核内部的寄存器,使用专有的12位地址编码空间,对一个hart,可以配置4k的CSR寄存器. 蜂 ...

  5. 0基础入门学习Python(第1-2章)

    第一章:就这么愉快的开始吧 1.1获取Python Python3.7 1.2从idle启动 Python 3.7.3 (default, Mar 27 2019, 09:23:39)[Clang 1 ...

  6. Dynamics 365 Customer Engagement中使用JavaScript和C#调用操作Action示例

    微软动态CRM专家罗勇 ,回复334或者20190509可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! Action (操作)是流程的一种,可以在工作流中调用,可以使用 ...

  7. Zeppelie连接jdbc的使用

    1. 下载 wget http://apache.mirror.cdnetworks.com/zeppelin/zeppelin-0.8.1/zeppelin-0.8.1-bin-all.tgz 2. ...

  8. MySQL分组查询统计

    GROUP BY 1.有个店铺表,字段为区域id,设备数量,店铺名称,如下: 2.如何按区域 district 统计 每个区域的设备数量,SQL如下 SELECT district, SUM( dev ...

  9. emacs c/c++ 中使用的命令大杂烩

    emacs c/c++ 中使用的命令大杂烩 注释,缩进,光标移动等 键盘操作 键盘操作对应函数名 说明 ESC Ctrl \ indent-region 对光标和标记之间的每行文本进行缩进 ESC ; ...

  10. PHP转Go系列:字符串

    字符串的赋值 在PHP中,字符串的赋值虽然只有一行,其实包含了两步,一是声明变量,二是赋值给变量,同一个变量可以任意重新赋值. $str = 'Hello World!'; $str = 'hia'; ...