首页 / 建站手册 / 搜索页:search.html

搜索页:search.html

搜索框写在哪、关键词怎么回填、结果怎么高亮,以及筛选与分页怎么配合。

模板文件:search.html | 访问地址:/search?kw=关键词

这个页面拿到的变量

{keyword}搜索关键词(等同于 {naicha:search})
{kwscope}搜索范围:标题摘要,还是连正文一起搜(站点设置里配)
{filtersOn}是否开着筛选('1'/'0')
{fdesc}当前筛选条件的文字描述
{param.kw} {param.page}URL 上的关键词与页码
{listTotal} {listPages}结果数 / 页数
{seo.*} {canonical}照常

这个页面能用的标签

{naicha:search}回填搜索框、拼结果链接
{naicha:list}取结果:keyword="{naicha:search}" order="relevance"
highlight="{naicha:search}"标题/摘要里的命中词标红(先转义再插标签,安全)
{naicha:page}结果分页
{naicha:filters}搜完之后再按栏目/年份筛(可选)
公共标签 + if/loop都能用

一份完整的搜索页

{naicha:include file="header.html"}

<form class="search" action="/search" method="get">
  <input type="search" name="kw" value="{naicha:search}" placeholder="搜索内容">
  <button type="submit">搜索</button>
</form>

{naicha:if var="listTotal" gt="0"}
  <p class="muted">共 {listTotal} 条结果</p>

  {naicha:list keyword="{naicha:search}" num="10"
               page="{naicha:param name='page'}" order="relevance"}
    <a href="{list.url}">{list.title highlight="{naicha:search}"}</a>
    <p>{list.summary highlight="{naicha:search}" excerpt="80"}</p>
  {/naicha:list}

  {naicha:page}
{naicha:else}
  {naicha:if var="keyword" notempty="1"}
    <p>没有找到与「{naicha:search}」相关的内容。</p>
  {naicha:else}
    <p>输入关键词开始搜索。</p>
  {/naicha:if}
{/naicha:if}

{naicha:include file="footer.html"}
⚠️ 搜索框的字段名是 kw(不是 keyword)—— 提交到别处不会有人报错,只是搜不到东西。

⚠️ order="relevance" 只在带关键词时有意义。搜索页用它, 普通列表页用 publish desc —— 两者别混着写。
没找到答案? 可以在 联系我们 留言说明使用场景,我们会补充进文档。