emlog添加tag访问计数器,用于清理tag标签,文章越来越多,标签也越来多,需要清理标签提升emlog的性能。
看着后台一大片的标签无从下手,所以我就想到添加个计数器,清理不经常被访问的标签。
这是对emlog程序进行HACK,而且涉及到数据库,请先备份数据库,请谨慎修改操作!!!


1、运行数据库添加对tag表添加字段,建议使用phpmyadmin修改,其中的emlog_tag的前缀改为你当前使用的前缀;


ALTER TABLE emlog_tag ADD count int(10) NOT NULL default '0' AFTER gid; 


2、在tag_model.php添加计数函数;

function updateTagViewCount($tagName) {
$this->db->query("UPDATE " . DB_PREFIX . "tag SET count=count+1 WHERE tagname='$tagName'");
} 

3、在tag_controller.php增加每次访问标签次数增加

$blogIdStr = $Tag_Model->getTagByName($tag);//在这个代码下面添加下面的代码
$Tag_Model->updateTagViewCount($tag);


4、修改tag_model.php的getTag函数,后台标签排序修改(以数量倒序,以标签的添加顺序倒序)

/**
* 获取标签
*
* @param int $blogId
* @return array
*/
function getTag($blogId = '') {
$tags = array();
$condition = $blogId ? "WHERE gid LIKE '%,$blogId,%'" : '';
$query = $this->db->query("select tagname,tid,gid from ".DB_PREFIX."tag $condition ORDER BY count DESC,tid DESC");//添加ORDER BY count DESC,tid DESC以数量倒序,以标签的添加顺序倒序
while ($row = $this->db->fetch_array($query)) {
$row['tagname'] = htmlspecialchars($row['tagname']);
$row['tid'] = intval($row['tid']);
$row['nums'] = count(explode(',', trim($row['gid'], ",")));
$tags[] = $row;
}
return $tags;
}