网站建设

帝国cms多个搜索模板出错

蜗牛 · 4月18日 · 2020年 · ·

写在头部:不想看我碎碎念的可以点击这里直接跳到解决方法

注意:如果你的网站的搜索模板不支持动态标签的调用,本方法可能不适合

由于帝国的搜索模板不支持动态标签的调用,所以我们基本上都会去搜索 帝国cms搜索模板支持动态标签

网上能搜索到的解决方法基本就一个,例如我写的这篇《帝国CMS搜索模板支持动态标签调用》,但是当你使用多个搜索模板的时候,却有一个很严重的bug。

一、bug复现

新闻搜索框:要使用新闻搜索模板

案例搜索框:要使用案例搜索模板

首先点击新闻搜索,搜索结果页使用新闻搜索模板,正常

然后点击案例搜索,搜索结果页使用新闻搜索模板,不正常

删除栏目缓存,更新数据库缓存。。。再次尝试

首页点击案例搜索,搜索结果页使用案例搜索模板,正常

然后点击新闻搜索,搜索结果页使用案例搜索模板,不正常

bug总结:当你更新完缓存以后,第一次搜索所使用的搜索模板是哪个模板,接下来的任何搜索都会使用这个模板

二、解决过程

这显然不是我们想要的,正常的情况是,我们点击新闻搜索,就用新闻搜索模板,点击案例搜索,就用案例搜索模板

经过N多次的测试,查找。突然想到我最开始为了让搜索模板支持动态标签调用,所以修改了搜索文件的源代码,也就是 /e/search/result/index.php 这个文件。是不是这个文件影响的呢?

我首先将这个文件备份,然后去帝国官网,下载了原版的帝国cms安装包,然后将原版的/e/search/result/index.php这个文件覆盖掉我修改过的文件(大家切记做好备份?),再次测试,发现正常了。

OK,原因找到了,/e/search/result/index.php 这个文件的修改,影响了帝国cms的正常搜索流程。

然后我就去网上各种找找找,发现都是提出这个问题的,并没有解决办法。

好吧,既然没有现成的解决方法,那就自己来吧

三、解决办法

打开/e/search/result/index.php

找到:

//页面支持标签
$tempr[temptext]=DtNewsBq('list'.$tempid,$tempr[temptext],0); 

修改为:

//页面支持标签
$tempr[temptext]=DtNewsBq('list'.$search_r['tempid'],$tempr[temptext],0); 

成品图:

成品图

好了,清除完缓存然后去试试吧~

ps: 本方法未经过大量验证,如果仍然有问题可以留言告诉我~

再ps:后来发现网上有大佬也写过类似的办法,大家可以点这个链接看看

0 条回应