emlog5.3升级到6.0.1版本文章标签消失修复教程
之前小编从emlog5.3升级到了emlog6.0,就出现了一个莫名其妙的问题,就是文章标签会消失,前几篇文章的标签还会有,但是后面文章的标签就消失了。这就很奇怪,当然这也不利于seo优化。废话不多说,下面就开始了。
首先,说一下emlog5.3升级到6.0教程。
对比下emlog5.3.1和emlog6.0.0发现程序变化不大,主要是对tag标签进行了优化。emlog6.0.升级步骤以及脚本如下:
升级方法:
1、确定程序是emlog5.3.1(本程序是对照5.3.1和6.0.0做的);
2、备份网站系统和数据库(非常重要);
3、把update.php上传到网站根目录,同config.php同一个目录;
4、浏览器访问update,按照提示输入数据库密码,确认等待升级完成;
5、上传emlog 6.0.0程序并覆盖,config.php和install.php不要上传。
6、进入博客后台,更新缓存,然后删除update.php。
update.php下载地址: https://itfd.lanzous.com/ic0p9yf
然后就开始标签消失问题的的修复,问题出现在emlog缓存函数中,
emlog老司机6.0.1版本缓存标签函数截图
emlog5.3版本老司机标签缓存函数
如此可见,emlog老司机6.0.1版本获取标签的代码中是从另一个缓存导入的文章id,这个导入文章的id是“newlog”,这个名称是获取文章列表页文章缓存的名称,经测试,如果在emlog后台系统设置中修改每页显示多少篇文章,这个获取标签的代码也会显示多少篇的,在这个篇数以后的文章并不会获取到任何标签,这不知道是不是老司机为了使emlog程序加快运行而修改的。
emlog6.0.1老司机版本缓存标签函数的修复方法就是找到emlog官方版5.3.1版本的此函数替换即可,但是,emlog5.3.1中的获取标签数据表的语句也有错误,这使得此函数在emlog6.0.1中使用还是无法获取到全部的标签,接下来写一下修复代码。
大家找到此路径:根目录/include/lib/cache.php ,进去修改。(注意在上述步骤替换标签缓存函数之后)
错误的代码:
$tquery = "SELECT tagname,tid FROM " . DB_PREFIX . "tag WHERE gid LIKE '%,$logid,%' " ;修复代码:(将上一行代码替换)
$tquery = "SELECT tagname,tid FROM " . DB_PREFIX . "tag WHERE gid LIKE '%,$logid,%' or gid LIKE '%,$logid%' or gid LIKE '%$logid,%' or gid LIKE '$logid'";
错误表现在sql语句中的LIKE截取代码
在tag数据表中emlog老司机6.0.1版本的数据为(1,2,3,4,5,6,7,8,9)
emlog5.3.1版本的数据为(,1,2,3,4,5,6,7,8,9)
可见emlog6.0.1的数据比emlog5.3.1的数据前面多了一个逗号,这使得这段获取数据的代码出错,LIKE后的 %,$logid,% 实际匹配的是数据中必须前后都有逗号的标签,利用到emlog6.0.1中并不会获取到1和9,emlog5.3.1也获取不到9,所以在使用中大家也没有注意文章到底少没少标签。
接下来介绍一下修复代码都是什么意思:
%,$logid% 是获取id前面有逗号的标签
%$logid,% 是获取id后面有逗号的标签
$logid 单独一个$logid是获取前后没有逗号的标签
中间用or逻辑运算符连接,就是匹配到的标签都会显示出来
这样就将每个文章所有的标签都提取出来,就不会导致文章获取标签错误的情况了。
好了教程到此结束,关注IT辅导,带你领略不一样的世界。
评论列表