PageAdmin 系统加入全文搜索

好像以前V3版本的时候可以通过插件来实现搜索的功能,但是PageAdmin V4之后的版本默认是不支持了,需要自行解决。目前使用了V4.0.8版本,企业版是没有搜索了,但是博客版还是有的。这样的话,事情就相对简单一些,修改下博客版的代码,基本上就能用了。

于是在网站上把blog的模板下载来,下载地址:http://file.pageadmin.net/v4/Blog.rar。解压缩后得到相关的文件夹,这里需要的是如下几个文件:

  • \Templates\Blog\views\搜索\Search.cshtml
  • \Templates\Blog\views\搜索\ssList.cshtml
  • \Templates\Blog\views\Model\ArticleListModel.cshtml
  • \Templates\Blog\views\Shared\zdyPagebreakPartial.cshtml

将这几个文件复制到在用的企业版的对应文件夹中。然后在模板文件下的 MyRoute.config 文件中插入路由:

<route urlConstraint="^search/([1-9]\d{0,8}/)?$"  viewPath="搜索/search.cshtml" httpcacheSolutionId="0" columnId="0" title="搜索 "></route>

在需要加入搜索的模板文件中加入相应的代码:

<div class="s-bar wow  animated fadeInDown">
        <input type="text" id="s_kw" class="s-input" placeholder="请输入关键词" value="@Request.QueryString["kw"]" size="20" onkeypress="if(event.keyCode == 13) search_kw();"><!-- 2020.07.02 增加回车搜索及长度-->
		<input type="button" class="s-btn"  value=" 搜索 "onclick="search_kw()">
        <script type="text/javascript">
            function search_kw() {
                var $skw = $("#s_kw")
                var kw = $skw.val().Trim();
                if (kw != "") {
                    location.href = "/search/?kw=" + $("#s_kw").val();
                }
                else {
                    $skw.focus();
                }
            }
        </script>
    </div>

稍微调整下Search.cshtml里面的代码:

string kw = Request.QueryString["kw"];
    var dataList = Html.InfoDataList(new { Table = "news", OrderBy = "thedate desc" }, "[content] like @kw", new { kw = "%" + kw + "%" }, pageInfo);<!--把原来的Table = "article"改成Table = "news",不然会搜任何都没有结果,因为根本没有article的数据表-->
    int count = dataList.Count();
	<div class="container mycontainer padding-top-20 clearFix">
    <div class="rightmain-box float-left padding-right-30">
        <div>
            <ul class="breadcrumb">
                <li><a href="/"><span class="fa fa-home"> 首页</span></a></li>
                <li><a>> 搜索</a></li>
            </ul>
        </div>
		
        @if (count > 0)
        {
		<div class="text-gray padding-top-20">共搜索到和关键词" <span class="text-red">@(kw)</span> "匹配的文章:@count 篇</div>
            @Html.Partial("ArticleListModel", dataList)
			@Html.Partial("zdyPagebreakPartial", pageInfo)

        }
        else
        {
            <div class="text-gray padding-top-20">暂时没有搜索到和关键词" <span class="text-red">@(kw)</span> "匹配的文章!</div>
        }
    </div>

此处对搜索的默认表格进行了修正,否则搜索不到东西的。

此外对搜索到的匹配数量在前端进行了展示,但存在一个问题是,当结果>10条的时候,显示的是固定为10。10以下的显示正常,有点小瑕疵,但不影响使用。

这样基本上就可以了,搜索没有问题,如果对展示的结果不太满意的话,就修改下ArticleListModel.cshtml中 <ul class=”m-newslist”> </ul>之间的代码就可以了。不影响搜索的结果。