phpcms中relation标签如何按时间排序

发布时间:2022-02-20 23:50:49 来源:青锋建站 作者:青锋建站
  细心的开发者可能已经发现phpcms中relation标签当使用relation="$relation"参数时可以使用order=""此排序功能,但是使用keywords="$rs[keywords]"}时,order参数便不生效。以下是青锋建站给大家分享的phpcms中relation标签如何按时间排序的解决方法。青锋建站专业外贸多语言网站建设外贸邮箱谷歌推广,专业承接中英文多语言外贸网站建设,知名品牌全国接单。产品包含外贸邮箱,谷歌推广,邮箱营销,外贸建站,美国主机。青锋建站是专业外贸网站建设团队,提供专业的外贸网站服务,包括:外贸官网、响应式外贸网站、中英文外贸网站、多国语言外贸网站、优化型外贸网站。联系我们可以致电或百度搜索“青锋建站”即可找到我们。
代码分析
  有关relation标签的文件是/phpcms/modules/content/classes/content_tag.class.php,其中有一段就是这个函数的开始:大约在167行,如下。

/**
* 相关文章标签
* @param $data
*/
public function relation($data) {
$catid = intval($data['catid']);
$modelid = intval($data['modelid']);
if(!$this->set_modelid($catid) && $modelid) {
$this->db->set_model($modelid);
$this->tablename = $this->db->table_name;
} elseif(!$this->set_modelid($catid)) {
return false;
}
$order = $data['order'];//注意这里是有调用order的参数的。但是只在$data['relation'])参数中生效,见下标准
$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(array('%',"'"), '',$data['keywords']);
$keywords_arr = explode(' ',$keywords);
$key_array = array();
$number = 0;
$i =1;
$sql .= " AND catid='$catid'";
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, '','','id');//注意在这里使用keywords="$rs[keywords]"}时并没有调用$order,因此我们只在把这里修改一下就可以
$r = $this->db->select($sql2, '*', $limit, $order,'','id');//这里我们将$order添加上。
  以上就是青锋建站给大家分享的
phpcms中relation标签如何按时间排序的解决方法。更多phpcms相关问题解决,请大家关注我们网站更新。青锋建站提供phpcms建站,二次开发服务。

Copyright © 2016-2026 青锋建站 版权所有