易优全站搜索改造,标题和内容双重搜索完善记录!
之前发现利用数据库查询语句可以从数据库直接读取内容,很方便,于是改写了下sql语句从内容里面搜索关键词,但是觉得标题搜索也应该考虑进来,于是决定利用union联合查询,发现可以。sql语句如下:
{eyou:assign name="keywords" value="$eyou.field.keywords"}
{eyou:assign name="n" value="$eyou.field.page|diy_page"}//自定义函数处理页码,后面sql语句会用到
{eyou:sql sql="select count(*) as count from(select aid from ey_article_content where content like '%$keywords%' union select aid from ey_archives where title like '%$keywords%' union select aid from ey_product_content where content like '%$keywords%') as count" id="field5"}共{$field5.count}条结果
{eyou:sql sql="select aid from ey_article_content where content like '%$keywords%' union select aid from ey_archives where title like '%$keywords%' union select aid from ey_product_content where content like '%$keywords%' limit $n[0],$n[1]" }//实用limit限制查询条数,防止数据过多数据库服务器崩溃
{eyou:assign name="aid" value="$field.aid"}
{eyou:sql sql="select aid from ey_archives where aid='$aid'" id="field3"}
{eyou:arcview aid="$field3.aid" id="field2" addfields="content" }
{eyou:assign name="neirong" value="$field2.content|html_msubstr"}
{$neirong,$keywords|diy_content}
{$field2.add_time|mydate='y-m-d',###}
{/eyou:arcview}
{/eyou:sql}
{/eyou:sql}
{/eyou:sql}
查询结果如下图所示
但是这样还不完善,还要有分页显示才行,于是改进如下:
分页好了,但是分页太长的话全部展示不好看啊,而且点击进入某页后,当前页码需要高亮显示,再改进下!
以上样式均为官方自带模板,可以结合自己的样式改造,复制相应的模板代码填充到合适位置即可!
最终效果如下图: