手机游戏
经典单机
角色扮演
休闲益智
动作冒险
射击枪战
赛车竞速
模拟经营
解密闯关
策略战争
手机软件
时尚购物
体育运动
资讯阅读
教育学习
摄影摄像
生活服务
效率办公
聊天社交
视频盒子
其它软件
新闻资讯
游戏攻略
软件教程
游戏问答
软件资讯
软件技术
叨叨念念
网站技术
技术问答
软件教程
资源资料
原创作品
代码学习
网页设计
网络技术
合集
合集
游戏合集
软件合集
资讯合集
视频合集
首页 > 原创作品 > 原创作品

emlog热门日志修改

作者:星知苑 时间:2013-05-30 10:43:11

emlog博客程序默认是的总的浏览数排序。这段热门日志的代码在include/model/log_model.php文件中第342~355行(官方默认的log_model.php文件,你自己修改过的,我也不知道在哪行。

其中第346行的mysql查询语句

$sql = "SELECT gid,title FROM " . DB_PREFIX . "blog WHERE hide='n' and type='blog' ORDER BY views DESC, comnum DESC LIMIT 0, $num";
从emlog_blog读出不隐藏(hide='n')和是日志的(type='blog',这个去掉了页面)日志,ORDER BY views DESC,comnum DESC LIMIT 0,$num这里$num设置显示的条数比如5条,[break]那么以views(浏览数)降序排列,如果浏览数相同的话以评论数定先后顺序,取5条。

从上面代码中可以看出,越早以前的文章的话阅读数肯定是比较多,那么导致这个热门日志排行上的文章几乎是不变的。所以个人认为有点不妥。

 

下面来改造代码(属于官方解释的HACK程序,有一定的危险,操作前先备份数据)

1.热门日志改成热评日志(以评论数作为排行,评论数相同以浏览数定先后顺序),只要交换下views和comnum就可以了,修改后的代码如下:

$sql = "SELECT gid,title FROM " . DB_PREFIX . "blog WHERE hide='n' and type='blog' ORDER BY comnum DESC, views DESC LIMIT 0, $num";

PS:适合平常日志评论比较多的博客,如果平常评论比较少的话,变化也是不大的。

 

2.热门日志改成本月热门日志。规定取日志发表的时间范围后以浏览数降序,相同浏览数的以评论数的降序排列,这里要分2种情况:一种是本月的,还有一种是最近30天的。

那么先来说说本月的,得到本月起点的时间戳

$t   =   mktime(0,0,0,date("m",time()),1,date("Y",time())); //本月起点的时间戳 
$sql = "SELECT gid,title FROM " . DB_PREFIX . "blog WHERE hide='n' and type='blog' and date>$t ORDER BY views DESC, comnum DESC LIMIT 0, $num";
修改后的完整代码:
function getHotLog($num) {
    $t   =   mktime(0,0,0,date("m",time()),1,date("Y",time()));   
    $sql = "SELECT gid,title FROM " . DB_PREFIX . "blog WHERE hide='n' and type='blog' and date>$t ORDER BY views DESC, comnum DESC LIMIT 0, $num";
    $res = $this->db->query($sql);
    $logs = array();
    while ($row = $this->db->fetch_array($res)) {
        $row['gid'] = intval($row['gid']);
        $row['title'] = htmlspecialchars($row['title']);
        $logs[] = $row;
        }
    return $logs;
    }

那么最近30天也就简单了,只要把$t的那个改改就可以了。

$t = time() - 3600 * 24 * 30;//以当前访问的时间戳最近30天

 

3.全部文章按当月的浏览数降序排列,相同浏览数的按评论数降序排列。

这里对数据库就需要添加2个字段,执行下面查询语句(数据库前缀默认为emlog)

添加最后浏览的时间的字段:

ALTER TABLE emlog_blog ADD lastview bigint(20) NOT NULL default '0'

添加本月浏览数的字段

ALTER TABLE emlog_blog ADD monviews mediumint(8) unsigned NOT NULL default '0'

数据库修改完毕,下面是log_model.php程序的修改。第289~296行增加阅读次数

这里这个执行总浏览数和当月浏览数每次浏览+1,还有下月清0

完整代码如下:

[2013-05-30]更新代码:合并update语句

	/**
	 * 增加阅读次数,修改最后阅读时间,增加本月阅读次数
	 *
	 * @param int $blogId
	 */
	function updateViewCount($blogId) {
		$this->db->query("UPDATE " . DB_PREFIX . "blog SET views=views+1 WHERE gid=$blogId");
		$res=$this->db->query("SELECT date,lastview FROM " . DB_PREFIX . "blog WHERE gid=$blogId");
		$row = $this->db->fetch_array($res);
        if(date("m",time())!=date("m",$row['lastview']) && date("m",time())!=date("m",$row['date']))
		{$this->db->query("UPDATE " . DB_PREFIX . "blog SET monviews=0,lastview=".time());}
		$this->db->query("UPDATE " . DB_PREFIX . "blog SET monviews=monviews+1,lastview=".time()." WHERE gid=$blogId");
	}

 

[2012-11-30]代码:
/**
* 增加阅读次数,修改最后阅读时间,增加本月阅读次数
*
* @param int $blogId
*/
function updateViewCount($blogId) {
    $this->db->query("UPDATE " . DB_PREFIX . "blog SET views=views+1 WHERE gid=$blogId");//总浏览数每次浏览+1
    $res=$this->db->query("SELECT date,lastview FROM " . DB_PREFIX . "blog WHERE gid=$blogId");//查询日志发表时间和最后浏览时间
    $row = $this->db->fetch_array($res);
    if(date("m",time())!=date("m",$row['lastview']) && date("m",time())!=date("m",$row['date']))//判断当前时间的月份和最后浏览时间的月份,以及判断最后浏览时间的月份和发表时间的月份是否一样。
    {$this->db->query("UPDATE " . DB_PREFIX . "blog SET monviews=0");//执行当月浏览数清0
    $this->db->query("UPDATE " . DB_PREFIX . "blog SET lastview=".time());//设置最后浏览时间到当前时间
}
    $this->db->query("UPDATE " . DB_PREFIX . "blog SET monviews=monviews+1 WHERE gid=$blogId");//执行当月浏览数+1
    $this->db->query("UPDATE " . DB_PREFIX . "blog SET lastview=".time()." WHERE gid=$blogId");//更新最后浏览时间到当前时间
    }

修改热门日志代码中的views改为monviews

$sql = "SELECT gid,title FROM " . DB_PREFIX . "blog WHERE hide='n' and type='blog' ORDER BY monviews DESC, comnum DESC LIMIT 0, $num";

PS:最后再说几句,这里只是简单的修改下,还有很多种修改热门日志排列的方法。

比如第2种中,我可以改成最新发布的文章的最近30天等等。

良心推荐

破解版游戏下载推荐
  • 成长王国中文破解版
  • 叫我传奇哥破解版
  • 塔防英雄2破解版
  • 塔塔星座破解版下载
  • 濡沫江湖破解版
  • 江湖风云录破解版
相信很多的玩家不管是在玩游戏还是在找游戏的很时候,都是会先看看有没有游戏破解的了,因为在游戏破解了之后是更容易受到玩家的喜爱,游戏里面的不管是功能还是各种角色等都是已经全部可以使用也是满级的等等,很多的种类的小编为了带了的不仅是一些比较好玩的破解的游戏,还是很火爆有的还可以赚钱的哦。

相关资讯