WenRou's Blog
[原创] emlog一步到位删除或者移动所有文章
2015-3-9 温柔哥
今天折腾emlog后台,无论文章还是评论都只能显示15篇文章,如果一个分类下面有N篇文章,你打算

将这N篇文章移动到一个新分类下面,或者要选择性删除,你觉得应该如何做呢?

如果按传统的方式,那么每次每页只能操作15篇文章,这样工作量太大了。


我在官方论坛发表了帖子,见http://bbs.emlog.net/thread-39927-1-1.html



结果大多数人说需要进入数据库里面删除或者操作,这个明显不够现实。


给管理员发了站内信息,但是一直不见回音。

没有办法,只能自己动手,慢慢摸索。



首先是想到admin/admin_log.php文件中去看看,这个文件是后台管理文章的。

结果里面没有控制数量的函数部分。

再找,views/admin_log.php  去看,也没有。

想到基础函数lib/function.base.php 中,看见一个分页函数


贴下来大家看看。






/**
* 分页函数
*
* @param int $count 条目总数
* @param int $perlogs 每页显示条数目
* @param int $page 当前页码
* @param string $url 页码的地址
*/
function pagination($count, $perlogs, $page, $url, $anchor = '') {
$pnums = @ceil($count / $perlogs);
$re = '';
$urlHome = preg_replace("|[\?&/][^\./\?&=]*page[=/\-]|", "", $url);
for ($i = $page - 5; $i <= $page + 5 && $i <= $pnums; $i++) {
if ($i > 0) {
if ($i == $page) {
$re .= " <span>$i</span> ";
} elseif ($i == 1) {
$re .= " <a href=\"$urlHome$anchor\">$i</a> ";
} else {
$re .= " <a href=\"$url$i$anchor\">$i</a> ";
}
}
}
if ($page > 6)
$re = "<a href=\"{$urlHome}$anchor\" title=\"首页

\">&laquo;</a><em>...</em>$re";
if ($page + 5 < $pnums)
$re .= "<em>...</em> <a href=\"$url$pnums$anchor\" title=\"尾页

\">&raquo;</a>";
if ($pnums <= 1)
$re = '';
return $re;
}





我修改后发现原来是控制的分页,原本下面是每5页一显示的,结果变成了每10页或者你修改



的其他数值 一显示。根本不是控制每页显示的文章篇数的。



我查!火大了。继续查找log相关的文件。在model目录下有一个log_model.php


打开一看。发现一个后台获取文章列表函数,太好了。










/**
* 后台获取文章列表
*
* @param string $condition
* @param string $hide_state
* @param int $page
* @param string $type
* @return array
*/
function getLogsForAdmin($condition = '', $hide_state = '', $page = 1,

$type = 'blog') {
$timezone = Option::get('timezone');
$perpage_num = Option::get('admin_perpage_num');
$start_limit = !empty($page) ? ($page - 1) * $perpage_num : 0;
$author = ROLE == ROLE_ADMIN ? '' : 'and author=' . UID;
$hide_state = $hide_state ? "and hide='$hide_state'" : '';
$limit = "LIMIT $start_limit, " . $perpage_num;
$sql = "SELECT * FROM " . DB_PREFIX . "blog WHERE type='$type'

$author $hide_state $condition $limit";
$res = $this->db->query($sql);
$logs = array();
while ($row = $this->db->fetch_array($res)) {
$row['date'] = gmdate("Y-m-d H:i", $row['date'] +

$timezone * 3600);
$row['title'] = !empty($row['title']) ?

htmlspecialchars($row['title']) : '无标题';
//$row['gid'] = $row['gid'];
//$row['comnum'] = $row['comnum'];
//$row['top'] = $row['top'];
//$row['attnum'] = $row['attnum'];
$logs[] = $row;
}
return $logs;
}





一看,我日啊,哪里可以控制数量呢。 

阅读之后,发现


$limit = "LIMIT $start_limit, " . $perpage_num;



应该就是控制数量的,干脆我就把它修改成了


$limit = "LIMIT $start_limit, " . 500;



这里我改成了默认显示500篇文章,你可以修改成你想要的数字。

再一刷新后台,瞬间齐刷刷所有文章出来了,如果你的文章不足500篇的,一页就全部列表出来了。



注意改完以后将修改的文件上传到对应的文件夹覆盖原来的文件就可以移动了,移动完以后

千万不要忘了恢复原来的默认值,也就是 $perpage_num 再次替换 500


发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容