默认的Joomla搜索是至少3个字才能搜索的,否则将搜索不到结果,并会出现如图(1)所示的提示。
图(1)3-20个字才能搜索
而这3个最小字符的限定,是直接写进代码中的,如图(2)所示:
图(2)最小搜索字固定限定3个字符
不过从图(2)中我们也发现,是可以调用用户自定义回调函数来进行设置的,我们的解决方案也在这里。接下来查看
$this->lowerLimitSearchWordCallback
的来源,我们可以发现,有两种解决方案:
1、使用Jlanguage的setLowerLimitSearchWordCallback()方法设置自定义的回调函数,这个设置需要在搜索进行前执行。
2、使用语言本地化覆盖的方式,覆盖方法有两种:
(1)/language/overrides/$lang.localise.php (2)/language/$lang/$lang.localise.php //$lang为语言标签,如en-GB
这点可以从图(3.1)和图(3.2)中看出:
图(3.1)语言本地化覆盖1
图(3.1)语言本地化覆盖2
本文选用第二种解决方案,新建一个/language/overrides/en-GB.localise.php的文件,文件内容如下:
<?php class en_GBLocalise{ /** * 自定义覆盖获取最小搜索字数限制方法 */ public function getLowerLimitSearchWord(){ $app = JFactory::getApplication(); $keyword = urldecode($app->input->getString('searchword')); //搜索词 if(preg_match('#[\x7f-\xff]#',$keyword)){ //判断是否包含至少一个汉字 return 2; //有则返回2 }else { return 3; //没有则返回3 } } }
然后测试效果如图(4)所示:
问题解决!
未经同意禁止转载!
转载请附带本文原文地址:解决Joomla搜索限制最少3个字,首发自 Zjmainstay学习笔记