dede搜索模板制作步骤是怎样的?

99ANYc3cd6
预计阅读时长 24 分钟
位置: 首页 DEDE建站 正文

DedeCMS 的搜索功能非常灵活,它允许你自定义搜索页面的样式、调用字段,甚至可以针对不同的模型(如文章、产品、图集等)制作不同的搜索结果页。

dede搜索模板制作
(图片来源网络,侵删)

整个过程可以分为以下几个核心步骤:

  1. 理解 DedeCMS 搜索机制
  2. 创建搜索结果模板文件
  3. 创建自定义搜索表单
  4. 后台设置模板
  5. 调用和美化搜索结果

第 1 步:理解 DedeCMS 搜索机制

在开始之前,你需要了解 DedeCMS 搜索是如何工作的:

  • 搜索入口:通常是一个包含 <form> 表单的页面,用户在这里输入关键词并选择搜索范围。
  • 提交地址:表单的 action 属性会指向一个固定的 PHP 脚本,通常是 /plus/search.php
  • 模板渲染search.php 脚本接收到搜索请求后,会根据你在后台设置的模板,来渲染搜索结果页面。
  • 模板文件:这个模板文件就是我们需要创建和修改的核心,它决定了搜索结果页面的最终呈现样式。

第 2 步:创建搜索结果模板文件

这是最关键的一步,我们需要创建一个或多个模板文件来定义搜索结果的布局。

文件位置

模板文件通常存放在你的模板目录下,路径为: /templets/你的模板文件夹/search.htm

dede搜索模板制作
(图片来源网络,侵删)

如果你的模板是 default,那么路径就是 /templets/default/search.htm

注意search.htm 是 DedeCMS 搜索结果的默认模板文件名,如果你想为不同的模型(如文章、产品)设置不同的搜索页,你需要使用更具体的命名规则,我们稍后会讲到。

模板文件的基本结构

一个 search.htm 文件通常包含三部分:

  • HTML 页头<head> 部分,用于引入 CSS、JS 等。
  • 搜索表单<form> 部分,让用户可以输入新的关键词进行搜索。
  • 搜索结果列表:使用 DedeCMS 的 自定义宏标记 {dede:global name='keyword'/}{dede:list}{dede:arclist} 来循环输出搜索到的内容。

示例 search.htm 代码

下面是一个完整的、基础的 search.htm 模板文件示例,你可以基于这个示例进行修改。

dede搜索模板制作
(图片来源网络,侵删)
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">搜索结果 - {dede:global name='keyword'/} - {dede:global name='cfg_webname'/}</title>
    <meta name="description" content="搜索“{dede:global name='keyword'/}”的相关结果" />
    <link rel="stylesheet" href="/templets/default/css/style.css"> <!-- 引入你的CSS文件 -->
</head>
<body>
    <div class="header">
        <!-- 你的网站头部 -->
    </div>
    <div class="main">
        <!-- 1. 自定义搜索表单 (非常重要,方便用户继续搜索) -->
        <div class="search-box">
            <form name="formsearch" action="{dede:global name='cfg_phpurl'/}/search.php" method="get">
                <input type="hidden" name="kwtype" value="0" />
                <input type="text" name="q" class="search-keyword" value="{dede:global name='keyword'/}" />
                <button type="submit" class="search-submit">搜索</button>
            </form>
        </div>
        <!-- 2. 搜索结果提示信息 -->
        <div class="search-result-info">
            搜索 "<strong>{dede:global name='keyword'/}</strong>" 找到 <strong>{dede:global name='resultcount'/}</strong> 个结果
        </div>
        <!-- 3. 搜索结果列表 (使用arclist标签) -->
        {dede:arclist titlelen='50' row='10'}
        <div class="result-item">
            <h3><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></h3>
            <p class="result-summary">[field:description function='cn_substr(@me, 200)'/]...</p>
            <div class="result-meta">
                <span>发布时间:[field:pubdate function='MyDate('Y-m-d', @me)'/]</span>
                <span>来源:[field:typename/]</span>
            </div>
        </div>
        {/dede:arclist}
        <!-- 4. 分页 -->
        <div class="page">
            {dede:pagelist listsize='4'/}
        </div>
    </div>
    <div class="footer">
        <!-- 你的网站底部 -->
    </div>
</body>
</html>

代码解释:

  • {dede:global name='keyword'/}:获取用户搜索的关键词,用于显示在标题和搜索框中。
  • {dede:global name='resultcount'/}:获取搜索到的结果总数。
  • {dede:arclist ...}:这是一个强大的列表标签,在这里用来循环输出搜索结果。
    • titlelen='50'长度限制为50个字符。
    • row='10':每页显示10条结果。
    • [field:arcurl/]:文章链接。
    • [field:title/]
    • [field:description/]
    • [field:pubdate/]:发布日期。
    • [field:typename/]:文章所属栏目名。
  • {dede:pagelist listsize='4'/}:调用分页导航。

第 3 步:创建自定义搜索表单

为了让用户可以在搜索结果页方便地修改关键词进行新的搜索,你需要在 search.htm 中放置一个搜索表单。

<form name="formsearch" action="/plus/search.php" method="get">
    <input type="hidden" name="kwtype" value="0" />
    <input type="text" name="q" class="search-keyword" value="{dede:global name='keyword'/}" />
    <button type="submit" class="search-submit">搜索</button>
</form>

关键点:

  • action 属性:必须指向 /plus/search.php
  • method 属性:通常使用 get
  • name="q":这是 DedeCMS 接收搜索关键词的默认变量名,不能改
  • name="kwtype":用于指定搜索类型(0:关键词,1:标题),保持 value="0 即可。

第 4 步:后台设置模板

创建好模板文件后,你需要告诉 DedeCMS 使用这个模板。

  1. 登录你的 DedeCMS 后台。
  2. 进入 【系统】 -> 【系统基本参数】 -> 【核心设置】**。
  3. 找到 “搜索结果模板目录” 选项,确保值是你的模板文件夹路径,templets/default
  4. 保存。

进行更精确的模板绑定:

  1. 进入 【核心】 -> 模型管理】**。
  2. 这里你可以为不同的内容模型(如“文章”、“软件”、“图集”)分别设置搜索模板。
  3. 点击你想要修改的模型后面的 “搜索设置”
  4. “列表模板”“搜索模板” 字段中,填入你的模板文件名,search_article.htm
  5. 保存。

高级用法:为不同模型创建不同模板

如果你想为“文章”和“产品”制作不同的搜索结果页,可以这样做:

  1. /templets/你的模板文件夹/ 下创建两个文件:
    • search_article.htm (文章搜索结果页)
    • search_product.htm (产品搜索结果页)
  2. search_article.htm 中,使用 {dede:arclist ...} 来调用文章。
  3. search_product.htm 中,使用 {dede:productlist ...} (或其他产品模型的自定义列表标签) 来调用产品。
  4. 在后台的 模型管理】 中,为“文章”模型设置搜索模板为 search_article.htm,为“产品”模型设置搜索模板为 search_product.htm

当用户在文章栏目下搜索时,就会调用 search_article.htm;在产品栏目下搜索时,就会调用 search_product.htm


第 5 步:调用和美化搜索结果

调用不同字段的搜索结果

{dede:arclist}{dede:list} 支持非常多的字段,你可以根据需要调用。

  • 缩略图[field:litpic/]
  • 作者[field:writer/]
  • 点击数[field.click/]
  • 自定义字段:如果你的模型有自定义字段,如 price (价格),可以直接用 [field:price/]

高级搜索与筛选

DedeCMS 的默认搜索功能比较基础,如果你需要更高级的筛选功能(如按价格区间、品牌、发布时间等),你需要:

  • 修改搜索表单:在表单中增加 <select> 下拉框或 <input type="checkbox"> 复选框,并给它们命名,<select name="price_range">...</select>
  • 修改 /plus/search.php:这是最复杂的一步,你需要修改这个 PHP 文件,让它接收你新增的筛选条件,并修改 SQL 查询语句,将筛选条件 WHERE 子句中,这需要一定的 PHP 和 MySQL 基础。
  • 修改模板:在 search.htm 中增加相应的条件判断,{dede:global name='price_range' function='(@me ? "价格范围:@me" : "")'/} 来显示当前筛选条件。

对于大多数网站,基础的 {dede:arclist} 搜索已经足够,如果需要复杂功能,可以考虑使用第三方搜索插件(如基于 Elasticsearch 的)或进行二次开发。

步骤 操作 关键点
创建模板文件 /templets/你的模板/ 下创建 search.htm 文件名固定,是搜索结果的默认模板。
编写模板内容 使用 HTML + DedeCMS 标签编写页面结构 包含搜索表单、结果列表、分页,核心标签是 {dede:global}{dede:arclist}
设置后台模板 进入后台,为核心模型绑定 search.htm 确保模板路径正确,并为不同模型设置不同模板可实现高级定制。
测试 在前台输入关键词进行搜索,检查页面显示效果 检查结果是否正确、分页是否正常、样式是否错乱。

遵循以上步骤,你就可以成功制作出符合自己网站风格的 DedeCMS 搜索模板了,从基础的模板文件开始,逐步增加功能和美化,是学习这个过程最好的方式。

-- 展开阅读全文 --
头像
C语言大整数四则运算如何高效实现?
« 上一篇 04-30
C语言如何输出国际象棋棋盘?
下一篇 » 04-30

相关文章

取消
微信二维码
支付宝二维码

目录[+]