专注分享博客教程插件和主题模板
EMLOG解决文章GID断号并自增断号ID的方法
无分类 2019-08-08 00:25:20 984 0

使用EMLOG的站长想必都知道,由于EMLOG使用GID自增号作为文章ID,因此一旦删除文章就会断掉,那么有没有办法解决文章GID断号的问题呢?

实际上,对于EMLOG文章GID断号的问题解决起来并不难,只要在添加文章的时候进行简单的判断就可以了,判断当前GID之前有无断号问题,有断号就优先选择断号的文章ID,没有的话直接自增就可以了。

一、操作原理

将GID自增顺序读取作为值写入到数组中,自增段从1开始,但数组值从0开始,因此需要先将数组($gidarr[0]='0')赋值掉,然后把$gidarr[]=gid,只要发现$gidarr键和键值不等,就是存在断号的情况了。

二、操作方法

找到include/model/log_model.php文件,替换相关代码

1、原始代码

/**
* 添加文章、页面
*
* @param array $logData
* @return int
*/
function addlog($logData) {
$kItem = array();
$dItem = array();
foreach ($logData as $key => $data) {
$kItem[] = $key;
$dItem[] = $data;
}
$field = implode(',', $kItem);
$values = "'" . implode("','", $dItem) . "'";
$this->db->query("INSERT INTO " . DB_PREFIX . "blog ($field) VALUES ($values)");
$logid = $this->db->insert_id();
return $logid;
}

2、替换代码

/**
* 添加文章、页面
*
* @param array $logData
* @return int
*/
function addlog($logData) {
$kItem = array();
$dItem = array();
foreach ($logData as $key => $data) {
$kItem[] = $key;
$dItem[] = $data;
}
$field = implode(',', $kItem);
$values = "'" . implode("','", $dItem) . "'";
$gidarr[0]='0';
$res = $this->db->query("SELECT gid From  " . DB_PREFIX . "blog ORDER BY gid ASC");
while ($row = $this->db->fetch_array($res)) {
$gidarr[] = $row['gid'];
}
foreach($gidarr as $key=>$val){
if($key!=$val){
$field = 'gid,'.$field;
$values = "'".$key."',".$values;
break;
}
}
$this->db->query("INSERT INTO " . DB_PREFIX . "blog ($field) VALUES ($values)");
$logid = $this->db->insert_id();
return $logid;
}

三、注意事项

1、使用本教程前,如果确认使用的是EMLOG 5.3.1版本且没有对源代码进行过修改,可以下载博客志改好的文件直接覆盖同名文件

EMLOG文章GID断号自增大小:4KB | 密码:无 | 来源:本站下载
文章说明
本文标签:
©版权声明
本站提供的一切软件、教程和游戏辅助仅限用于娱乐和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集,版权争议与本站无关。您必须在下载后的24个小时之内从您的设备中彻底删除。如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
评论留言

昵称

邮箱

地址