如何解决phpcms关联文章排序不变的问题
发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,这篇文章运用简单易懂的例子给大家介绍如何解决phpcms关联文章排序不变的问题,代码非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。phpcms关联文章排序不变问题的修改方法:打开 ph
千家信息网最后更新 2025年02月05日如何解决phpcms关联文章排序不变的问题
这篇文章运用简单易懂的例子给大家介绍如何解决phpcms关联文章排序不变的问题,代码非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
phpcms关联文章排序不变问题的修改方法:
打开 phpcms/modules/content/classes/content_tag.class.php 内容模型标签类,发现该标签仅在内容存在人为设置的相关阅读时,则依照order参数进行排序。而当内容不存在人为设置的相关阅读时,则按照关键字进行查询,但此时并没有按照order参数进行排序。而是不进行排序。这也就是为什么文章调用的相关阅读总是那么陈旧的原因了。
修正该问题的方法如下:
修改 phpcms/modules/content/classes/content_tag.class.php 内容模型标签类文件,将 content_tag 类中 relation 方法修改为:
代码如下:
/*** 相关文章标签* @param $data*/public function relation($data) {$catid = intval($data['catid']);if(!$this->set_modelid($catid)) return false;$order = $data['order'];$sql = "`status`=99";$limit = $data['id'] ? $data['limit']+1 : $data['limit'];if($data['relation']) {$relations = explode('|',trim($data['relation'],'|'));$relations = array_diff($relations, array(null));$relations = implode(',',$relations);$sql = " `id` IN ($relations)";$key_array = $this->db->select($sql, '*', $limit, $order,'','id');} elseif($data['keywords']) {$keywords = str_replace('%', '',$data['keywords']);$keywords_arr = explode(' ',$keywords);$key_array = array();$number = 0;$i =1;foreach ($keywords_arr as $_k) {$sql2 = $sql." AND `keywords` LIKE '%$_k%'".(isset($data['id']) && intval($data['id']) ? " AND `id` != '".abs(intval($data['id']))."'" : '');$r = $this->db->select($sql2, '*', $limit, $order,'','id');$number += count($r);foreach ($r as $id=>$v) {if($i<= $data['limit'] && !in_array($id, $key_array)) $key_array[$id] = $v;$i++;}if($data['limit']<$number) break;}}if($data['id']) unset($key_array[$data['id']]);return $key_array;}
其实只是将 $r = $this->db->select($sql2, '*', $limit, '','','id'); 替换为了 $r = $this->db->select($sql2, '*', $limit, $order,'','id'); 让order参数传入查询方法。
在模板当中,使用如下标签,加上order参数即可实现排序了。
代码如下:
{pc:content action="relation" relation="$relation" id="$id" catid="$catid" num="5" keywords="$rs[keywords]" order="id DESC"}{loop $data $r}{/loop}{/pc}
如果有洁癖的朋友,担心直接修改PC会影响未来升级,可以将其单独提取出来。放到模板中当作函数使用。代码如下:
代码如下:
set_model($category[$catid]['modelid']);$order = $data['order'];$sql = "`status`=99";$limit = $data['id'] ? $data['limit']+1 : $data['limit'];if($data['relation']) {$relations = explode('|',trim($data['relation'],'|'));$relations = array_diff($relations, array(null));$relations = implode(',',$relations);$sql = " `id` IN ($relations)";$key_array = $db->select($sql, '*', $limit, $order,'','id');} elseif($data['keywords']) {$keywords = str_replace('%', '',$data['keywords']);$keywords_arr = explode(' ',$keywords);$key_array = array();$number = 0;$i =1;foreach ($keywords_arr as $_k) {$sql2 = $sql." AND `keywords` LIKE '%$_k%'".(isset($data['id']) && intval($data['id']) ? " AND `id` != '".abs(intval($data['id']))."'" : '');$r = $db->select($sql2, '*', $limit, $order,'','id');$number += count($r);foreach ($r as $id=>$v) {if($i<= $data['limit'] && !in_array($id, $key_array)) $key_array[$id] = $v;$i++;}if($data['limit']<$number) break;}}if($data['id']) unset($key_array[$data['id']]);return $key_array;}?>
在模板中,使用如下PHP代码获取即可。
代码如下:
{php $data = mk1_content_tag_relation(array('relation'=>$relation,'id'=>$id,'catid'=>$catid,'keywords'=>$rs['keywords'],'order'=>'id DESC','limit'=>'4')); }{loop $data $r}{/loop}
关于如何解决phpcms关联文章排序不变的问题就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
排序
代码
文章
内容
标签
问题
参数
方法
关联
模板
更多
模型
帮助
查询
不错
陈旧
也就是
例子
关键
关键字
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
方舟手游凹凸世界怎么找服务器
深圳市一只豹网络技术有限公司
停服务器视频教学
网络安全系统费用多少
软考中级数据库和软件设计
深圳市流泉百佳网络技术有限公司
实习网络技术内容
潍坊OA软件开发招聘信息
软件开发与测试占比
重组网络安全概念股
网络安全属于国家安全吗
诺亚5g网络安全吗
安徽党性体检软件开发
广元软件开发解决方案
网络安全三级认证注意事项
工业网络技术就业烂吗
河北正规软件开发品质保障
html上传数据库中
linux服务器模拟器
数据库找重名的学生
国家网络安全战略发布时间
数据库怎么创建启动窗体
防护网络安全姿料
设计网络安全需要注意什么
联想服务器带电插拔出现UB
东皇网络技术服务有限公司
2021年公安机关网络安全
软件开发工具的4个特征
加强计算机网络安全的措施
互联网科技的网站首页