网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > 网络知识 > 正文

Phpcms v9相关阅读调用文章及排序的优化

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 14/06/29

鉴于大家对网络知识十分关注,我们编辑小组在此为大家搜集整理了“Phpcms v9相关阅读调用文章及排序的优化”一文,供大家参考学习

  之前一直没有注意过相关阅读的排序问题,今天偶尔看帖有网友说道,才发现,果真如此。调用出来的内容十分陈旧。于是尝试添加 order="id DESC" 参数进行排序,调用顺序依然毫无变化。打开 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 Phpcms v9相关阅读调用文章及排序的优化_网学
当前位置: 网学 > 编程文档 > 网络知识 > 正文

Phpcms v9相关阅读调用文章及排序的优化

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 14/06/29
content
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号
k) {
$sql2 = $sql." AND `keywords` LIKE ''% Phpcms v9相关阅读调用文章及排序的优化_网学
当前位置: 网学 > 编程文档 > 网络知识 > 正文

Phpcms v9相关阅读调用文章及排序的优化

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 14/06/29
content
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号
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会影响未来升级,可以将其单独提取出来。放到模板中当作函数使用。代码如下:

<?php
/**
* 内容模型 - 相关文章标签(修正排序异常问题)
* @param $data
*/
function mk1_content_tag_relation($data) {
$db = pc_base::load_model(''content_model'');
$catid = intval($data[''catid'']);
$siteids = getcache(''category_content'',''commons'');
if(!$siteids[$catid]) return false;
$siteid = $siteids[$catid];
$category = getcache(''category_content_''.$siteid,''commons'');
if(empty($category)) return false;
if($category[$catid][''type'']!=0) return false;
$db->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 Phpcms v9相关阅读调用文章及排序的优化_网学
当前位置: 网学 > 编程文档 > 网络知识 > 正文

Phpcms v9相关阅读调用文章及排序的优化

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 14/06/29
content
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号
k) {
$sql2 = $sql." AND `keywords` LIKE ''% Phpcms v9相关阅读调用文章及排序的优化_网学
当前位置: 网学 > 编程文档 > 网络知识 > 正文

Phpcms v9相关阅读调用文章及排序的优化

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 14/06/29
content
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号
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}

  其实只是一个小问题,PC在未来应该会进行修正的,以上方法提供给那些心急的站长朋友们。

  原文地址:http://bbs.phpcms.cn/thread-696949-1-1.html

网学推荐

免费论文

原创论文

设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号