# <stl:search> 搜索
<stl:search
  isAllSites="对全部站点搜索"
  siteName="站点名称"
  siteDir="站点文件夹"
  siteIds="站点Id列表"
  channelIndex="栏目索引"
  channelName="栏目名称"
  channelIds="栏目Id列表"
  type="搜索类型"
  word="搜索关键词"
  dateAttribute="搜索时间字段"
  dateFrom="搜索开始时间"
  dateTo="搜索结束时间"
  since="搜索时间段"
  pageNum="每页显示的内容数目"
  isHighlight="关键字高亮"
  isDefaultDisplay="是否默认显示全部内容"
>
</stl:search>
# 说明
通过 stl:search 标签在模板中显示搜索结果
stl:search 标签有默认显示方式和自定义显示方式两种表现形式。如果 <stl:search> 不包含子标签则采用默认显示方式显示搜索提交表单、如果 <stl:search> 包含子标签则采用自定义的内容显示搜索提交表单。
<stl:search> 标签对应的实体为{stl:search}。
# 页面参数
上表对应的属性均可作为页面参数传递给 <stl:search> 标签,系统将首选页面参数值,如果未传参数,系统再从 <stl:search> 属性取值。
示例:/utils/search.html?word=中国&type=title&pageNum=10 将优先于 <stl:search type="title,body" pageNum="20">。
# 子标签
| 子标签 | 说明 | 
|---|---|
| stl:loading | 正在搜索时的显示模板,可以省略 | 
| stl:yes | 搜索出内容时的显示模板,可以省略 | 
| stl:no | 未搜索出内容时的显示模板,可以省略 | 
如果需要根据是否搜索成功显示不同的结果,需要使用子标签 <stl:yes> 和 <stl:no> ,有搜索结果时将显示 <stl:yes> 中的内容,无搜索结果时将显示 <stl:no> 中的内容。
如果只定义搜索结果模板,可以省略<stl:yes>,直接将模板放到<stl:search> 中。
自定义搜索提交表单需要在 <stl:search> 中嵌入显示搜索结果的标签,必须包含的标签有 <stl:pageContents> 和 <stl:pageitems> 及 <stl:pageItem> 标签,分别用于显示搜索结果分页列表和搜索结果翻页项。
- <stl:search> 内必须包含一个 <stl:pageContents> 标签,用于显示搜索结果内容列表,详情请参考 <stl:pageContents> 标签。
- <stl:search> 内必须包含一个 <stl:pageitems> 标签和多个 <stl:pageItem> 标签,用于显示翻页项,详情请参考 <stl:pageItems> 标签及 <stl:pageItem> 标签。
- <stl:search> 中除以上标签外可以添加任意 Html 标签或 STL 标签,用于组织显示样式。
# 属性
| 属性 | 说明 | 
|---|---|
| isAllSites | 对全部站点搜索 | 
| siteName | 站点名称 | 
| siteDir | 站点文件夹 | 
| siteIds | 站点 Id 列表 | 
| channelIndex | 栏目索引 | 
| channelName | 栏目名称 | 
| channelIds | 栏目 Id 列表 | 
| type | 搜索类型 | 
| word | 搜索关键词 | 
| dateAttribute | 搜索时间字段 | 
| dateFrom | 搜索开始时间 | 
| dateTo | 搜索结束时间 | 
| since | 搜索时间段 | 
| pageNum | 每页显示的内容数目 | 
| isHighlight | 关键字高亮 | 
| isDefaultDisplay | 是否默认显示全部内容 | 
# isAllSites - 对全部站点搜索
是否对全部站点进行搜索
- "true"搜索所有站点的内容
- "false"只搜索本站内容,默认值
# siteName - 站点名称
站点名称,设置后系统将只搜索对应站点的内容
# siteDir - 站点文件夹
站点文件夹,设置后系统将只搜索对应站点的内容
# siteIds - 站点 Id 列表
站点 Id 列表,多个站点 Id 以“,”分割,设置后系统将只搜索对应站点集合的内容
# channelIndex - 栏目索引
栏目索引,设置后系统将只搜索对应栏目及其下级栏目的内容
# channelName - 栏目名称
栏目名称,设置后系统将只搜索对应栏目及其下级栏目的内容
# channelIds - 栏目 Id 列表
栏目 Id 列表,多个栏目 Id 以“,”分割,设置后系统将只搜索对应栏目集合及其下级栏目的内容
# type - 搜索类型
title 定义搜索字段,默认为 title,可以定义多个搜索字段,如:title,body
# word - 搜索关键词
定义搜索关键词,通常不设置在模板中,系统从地址栏参数中获取
# dateAttribute - 搜索时间字段
AddDate 日期搜索字段,定义 dateFrom、dateTo 或者 since 日期过滤条件的对应日期字段
# dateFrom - 搜索开始时间
搜索日期开始时间
# dateTo - 搜索结束时间
搜索日期结束时间
# since - 搜索时间段
搜索时间段,格式为"数字+日期符号",日期符号有"y"、"m"、"d"及"h",分别代表年、月、天及小时。
# pageNum - 每页显示的内容数目
每页显示多少条内容
# isHighlight - 关键字高亮
是否将搜索关键字在搜索结果中高亮显示
- "true"高亮显示
- "false"正常显示
# isDefaultDisplay - 是否默认显示全部内容
如果设置为true,搜索页无搜索关键词时将显示所有内容结果
- "true"默认显示全部内容
- "false"默认不显示结果
# 示例
# 采用自定义方式显示搜索结果,搜索结果关键字高亮显示
<stl:search isHighlight="true">
  <stl:pageContents scope="All" pageNum="12">
    <div>
      <stl:a target="_blank"></stl:a><br />
      <stl:content
        type="Body"
        isClearTags="true"
        wordNum="120"
      ></stl:content>
    </div>
  </stl:pageContents>
  <br />
  <stl:pageItems>
    <table
      cellpadding="0"
      cellspacing="0"
      width="90%"
      height="40"
      align="center"
    >
      <tr>
        <td align="left">
          <stl:pageItem type="FirstPage" text="首页"></stl:pageItem> |
          <stl:pageItem type="PreviousPage" text="上一页"></stl:pageItem> |
          <stl:pageItem type="NextPage" text="下一页"></stl:pageItem> |
          <stl:pageItem type="LastPage" text="末页"></stl:pageItem>
        </td>
        <td align="right">
          <stl:pageItem type="CurrentPageIndex" text="当前页:"></stl:pageItem>
          <stl:pageItem type="PageNavigation"></stl:pageItem>
        </td>
      </tr>
    </table>
  </stl:pageItems>
</stl:search>
# 自定义载入中、有搜索结果以及无搜索结果模板
下面的例子通过自定义载入中、有搜索结果以及无搜索结果模板来实现搜索页面的自定义。
<stl:search>
  <stl:loading>
    <div class="alert alert-info" role="alert">
      <strong>提示!</strong> 系统正在搜索中,请稍后...
    </div>
  </stl:loading>
  <stl:yes>
    <stl:pageContents scope="All" pageNum="12">
      <stl:a target="_blank"></stl:a><br />
    </stl:pageContents>
    <br />
    <stl:pageItems>
      <table
        cellpadding="0"
        cellspacing="0"
        width="90%"
        height="40"
        align="center"
      >
        <tr>
          <td align="left">
            <stl:pageItem type="FirstPage" text="首页"></stl:pageItem> |
            <stl:pageItem type="PreviousPage" text="上一页"></stl:pageItem> |
            <stl:pageItem type="NextPage" text="下一页"></stl:pageItem> |
            <stl:pageItem type="LastPage" text="末页"></stl:pageItem>
          </td>
          <td align="right">
            <stl:pageItem
              type="CurrentPageIndex"
              text="当前页:"
            ></stl:pageItem>
            <stl:pageItem type="PageNavigation"></stl:pageItem>
          </td>
        </tr>
      </table>
    </stl:pageItems>
  </stl:yes>
  <stl:no>
    <div class="alert alert-danger" role="alert">
      <strong>抱歉!</strong> 找不到和您的查询相符的项目
    </div>
  </stl:no>
</stl:search>