EMLOG解决文章GID断号并自增断号ID的方法

使用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版本且没有对源代码进行过修改,可以下载博客志改好的文件直接覆盖同名文件

温馨提示:本文最后更新于2020-10-24 22:18:15,某些文章具有时效性,若有错误或已失效,请在下方留言或联系六速博主

请协助本站百度一下优化

© 版权声明
THE END
喜欢就支持一下吧
点赞39赞赏
分享
脑洞吐槽 抢沙发

请登录后发表评论