打败搜索之:全站按模型搜索
一、需求分析:
经常有客户要求搜索全站的“图片”、“文章”、“视频”等,而我们系统默认是无这样的标签的。怎么办?改标签。
直接下载使用:文章结尾
二、默认搜索介绍(大神跳过):
系统的搜索是根据url的参数来决定读取那个页面的,下面就是我们系统搜索功能的详解说明url: /search.aspx?searchtype=1&modelId=2&nodeId=2&Keyword=dd&fieldOption=title
参数说明:
searchtype:搜索类型 0全站搜索; 1模型搜索; 2专题搜索
modelId:模型id,当searchtype=1时才有效
nodeId:节点id
kewword: 搜索关键词
fieldOption: 搜索字段,title:标题,keyword:关键词,Content:内容,author:作者,inputer:录入者。
当searchtype=0时,系统会跳到 其他模板/搜索页模版.html
当searchtype=1时,系统会根据modelId的值跳转到对应的模型搜索模板,例如modeId=1时,会跳到
其他模板/文章栏目搜索页模板.html
三、思考解决方案
客户要求:搜索全站的“图片”、“文章”、“视频”等
根据系统默认情况,全站搜索不会区分模型,而栏目内搜索必须限定nodeid,就是说必须在某栏目下搜索。
既然如此我们就在“全站搜索按标题.config”基础上修改,让他能接收modeId参数,从而实现我们的需求。
四、标签修改
具体标签修改过程就省略了,有兴趣的看以看看标签内部。
我在“全站搜索按标题.config”标签,增加了2个参数
searchModel 和 models
介绍:
searchModel :
是否搜索模型,结合models使用。
searchModel="notIn" models="0" 全站搜索
searchModel="notIn" models="1,2" 不搜索模型1和2
searchModel="in" models="1,2" 只搜索模型1和2
什么时候需要用到“排除某模型搜索呢?”
有时候全站搜索会吧“友情链接”、“留言”、“评论”等模型的信息都搜索出来,而这些通常来说不是用户的需要,所以此时我们可以通过 searchModel="notIn" models="xx,xx" 来排除某些不需要搜索的模型。
调用方式:
默认是全站搜索
全站搜索:
{PE.Label id="全站搜索按标题" keyword="@Request_keyword" outputQty="25" titleLength="50" searchModel="notIn" models="0" /}
搜索全站文章模型:
{PE.Label id="全站搜索按标题" keyword="@Request_keyword" outputQty="25" titleLength="50" searchModel="in" models="1" /}
如此类推。
五、使用方式
1、修改url:
/search.aspx?searchtype=1&modelId=1&Keyword=dd
2、覆盖原来的“全站搜索按标题.config”
3、修改模板,由于标签默认是全站搜索的,那么只需要修改"**栏目搜索页模板.html"里面的搜索标签就可以了,例如 "文章栏目搜索页模板.html"的搜索标签是:
{PE.Label id="文章栏目内搜索" titleLength="50" contentLength="0" parentId="@RequestInt_nodeid" fieldname="@Request_fieldoption" fieldvalue="@Request_keyword" /}
我们用一下标签替换即可:
{PE.Label id="全站搜索按标题" keyword="@Request_keyword" outputQty="25" titleLength="50" searchModel="in" models="1" /}
标签下载和具体例子
用户登录
还没有账号?
立即注册