联系QQ 284710375
首页 > 闲情逸致 > 工作小结
收藏

phpcms二开后推荐位不能正常使用的问题2018-05-07 11:07:52

大潇博客 原创文章,转载请标明出处

去年做的一个项目,使用phpcms二开,上线不久就发现了一个bug:添加内容时每次选择了推荐位,保存内容功能正常。修改内容时,打开编辑文章,推荐位不会自动勾选,这样就导致必须再选择一次推荐位,原来推荐位中的排序也需要重新做,如果只是修改少部分内容,很可能会忘记再次勾选推荐位。

这个问题已经存在很久,刚发现时曾做过调试,无奈没找到问题根源,由于我做的这个项目使用了pc的站群功能,相同后台有多个分站,现在把其它分站都删掉了,只留下一个网站并且它的站点id原来不是1,经过多次修改后,终于把siteid全部改为1,可以认为它就是默认的主站,由于存在这些原因,导致网站后台和数据库比较混乱,出现问题后调试陷入困局。

今天再次做好准备,要彻底解决这个bug,于是乎漫漫的读代码ing。

首先说明,这个项目前端数据均是自己写的控制器,使用ajax调用,后台添加数据默认控制器为content.php,这个也修改为content_school.php(内容)。

根据控制器里的提示,可知后台修改内容时的信息是通过caches/caches_model/caches_data/content_form.class.php这个缓存文件来整合的
打开这个文件,找到content中调用的get方法,其中最主要的莫非下面两行代码,通过传入的参数调用方法,于是乎,寻寻觅觅一番后找到了posid方法,又仔细的查了数据,终于锁定了问题的根源
如上图所示,原来我的控制器换了名字,在原有的控制器名字上面加了_school,这里只能找到默认的控制器,不能匹配我二开后上传的控制器,在上面的if语句中加入“|| ROUTE_A == 'edit_school'”,问题得到解决。

可是,这个文件在cache中,缓存文件在每次更新缓存后,都会还原,所以想要从根本解决问题,还是需要修改真正的程序文件,打开phpcms/modules/\content/fields/posid文件夹(phpcms的字段相关信息一般都保存在这里),打开form.inc.php文件,其中的方法便是我们在缓存文件中看到的posids方法了,修改它之后,更新缓存,问题便彻底解决了。

打赏

阅读排行

大家都在搜

博客维护不易,感谢你的肯定
扫码打赏,建议金额1-10元
  • 15601023311