使用Drupal很多年了,在站内搜索上基本上都是采用了系统自带的搜索功能,搜索框基本没变,只是搜索结果页通过search-results.tpl.php和search-result.tpl.php进行过一些小的修改。但遇到了数据量巨大、汉字编码等问题的时候,也在某些情况下采用过其它方式:
- Google Custom Search Engine,这个在国外还可以用,在国内无法使用;
- Apache Solr,需要自建一套搜索功能,比较复杂;
- Drupal Views,可以实现一些组合条件搜索查询功能。
最近在新建已经完善以前网站的时候,遇到用户搜索目标比较清晰,我们网站中不一定有正好用户需要的关键词但有其中截取的一部分的信息,例如电话号码、IP地址等,如果能用程序做一些判断就可以让用户避免“搜索无结果”的答复,后来试了几种办法,可以用程序与Drupal本身的搜索功能结合起来用,给用户更好的体验:
- 修改search-results.tpl.php模板,在正常搜索结果下方添加PHP程序,对搜索词(从URL获取)进行提取、分析,给用户呈现搜索以外的结果或者操作提示;
- 去掉Drupal搜索框block,完全自己新建一个带form的block,提交到一个专门的URL,在这个URL中用PHP程序对关键词进行提取、判断,如果符合某些特征就跳转到相应的功能模块处理,如果不符合预订的特征就跳转到正常搜索页面URL(www.example.com/search/node/xxx);
- 修改search-block-form.tpl.php模板,在提交前就按自己的想法修改,类似自建一个带form的block;
- 在template.php中用YOURTHEME_form_search_block_form_alter来替换系统的搜索框。
前两种我都试过,后面两种还没有试过,但都应该可以使用。
评论2
这个是怎么配置的呀?
这个是怎么配置的呀?我知道的都已经写在上面了啊,要自己一点点去试
我知道的都已经写在上面了啊,要自己一点点去试