织梦搜索页面调用代码

99ANYc3cd6
预计阅读时长 26 分钟
位置: 首页 织梦建站 正文

织梦的搜索功能主要通过一个核心文件 plus/search.php 来实现,这个文件会根据URL中的参数(如关键字、频道类型等)来渲染搜索结果页面。

下面我将分步讲解如何实现和自定义搜索页面。


创建搜索页面模板

您需要在您的模板目录(通常是 /templets/default/ 或您自定义的模板目录)下创建一个搜索结果页模板文件。

文件名建议: search.htm

这个模板文件将用来展示搜索结果。


搜索页面核心调用代码

search.htm 模板文件中,您需要使用织梦的特定标签来获取和显示搜索结果,以下是完整的代码结构,包含了头部、搜索框、结果列表和分页。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">{dede:global name='keyword'/} - 搜索结果 - {dede:global.cfg_webname/}</title>
    <meta name="description" content="搜索关于'{dede:global name='keyword'/}'的相关内容。">
    <link rel="stylesheet" href="/templets/default/style.css"> <!-- 引入您的CSS文件 -->
</head>
<body>
    <!-- 头部部分 (您的网站头部) -->
    {dede:include filename="head.htm"/}
    <!-- 主要内容区域 -->
    <div class="main-container">
        <div class="search-box">
            <form name="formsearch" action="{dede:global.cfg_cmsurl/}/plus/search.php" method="get">
                <input type="hidden" name="kwtype" value="0" />
                <input type="text" name="q" class="search-input" placeholder="请输入搜索关键字" value="{dede:global name='keyword'/}">
                <button type="submit" class="search-btn">搜索</button>
            </form>
        </div>
        <!-- 搜索结果区域 -->
        <div class="search-results">
            {dede:global name='keyword'/} 的搜索结果,共找到 <strong>{dede:global name='resultcount'/}</strong> 条相关信息
            <!-- 搜索结果列表开始 -->
            <ul class="result-list">
                {dede:list pagesize='10'}
                <li>
                    <h3><a href="[field:arcurl/]">[field:title/]</a></h3>
                    <p class="summary">[field:description function='cn_substr(@me, 200)'/]...</p>
                    <div class="info">
                        <span>来源:[field:typename/]</span>
                        <span>时间:[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
                    </div>
                </li>
                {/dede:list}
            </ul>
            <!-- 搜索结果列表结束 -->
            <!-- 搜索结果分页开始 -->
            <div class="page-nav">
                {dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}
            </div>
            <!-- 搜索结果分页结束 -->
        </div>
    </div>
    <!-- 底部部分 (您的网站底部) -->
    {dede:include filename="footer.htm"/}
</body>
</html>

代码详解

搜索表单

<form name="formsearch" action="{dede:global.cfg_cmsurl/}/plus/search.php" method="get">
    <input type="hidden" name="kwtype" value="0" />
    <input type="text" name="q" class="search-input" placeholder="请输入搜索关键字" value="{dede:global name='keyword'/}">
    <button type="submit" class="search-btn">搜索</button>
</form>
  • action="{dede:global.cfg_cmsurl/}/plus/search.php":这是织梦搜索的核心处理文件,必须正确指向。
  • method="get":使用 GET 方法提交,这样搜索关键字会显示在 URL 中,方便分享和记录。
  • <input type="hidden" name="kwtype" value="0">:指定搜索类型。
    • 0:模糊搜索(默认)。
    • 1:精确搜索。
  • <input type="text" name="q">:这是搜索关键字输入框。name 属性必须是 q,这是 search.php 识别的关键字参数。
  • value="{dede:global name='keyword'/}":这个标签非常有用,它会显示用户上一次搜索的关键字,实现“搜索框回填”功能,提升用户体验。

搜索结果头部信息

{dede:global name='keyword'/} 的搜索结果,共找到 <strong>{dede:global name='resultcount'/}</strong> 条相关信息
  • {dede:global name='keyword'/}:获取当前搜索的关键字。
  • {dede:global name='resultcount'/}:获取本次搜索到的总结果数。

搜索结果列表

{dede:list pagesize='10'}
    <li>
        <h3><a href="[field:arcurl/]">[field:title/]</a></h3>
        <p class="summary">[field:description function='cn_substr(@me, 200)'/]...</p>
        <div class="info">
            <span>来源:[field:typename/]</span>
            <span>时间:[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
        </div>
    </li>
{/dede:list}
  • {dede:list}:这是在搜索结果页中用来循环输出文章列表的标签,它和首页列表 {dede:arclist} 不同,{dede:list} 专门用于搜索结果页
  • pagesize='10':设置每页显示的搜索结果数量。
  • [field:arcurl/]:文章的链接地址。
  • [field:title/]:文章的标题。
  • [field:description function='cn_substr(@me, 200)'/]:文章的摘要,并用 cn_substr 函数截取前200个字符。
  • [field:typename/]:文章所在的栏目名称。
  • [field:pubdate function="MyDate('Y-m-d', @me)"/]:文章的发布日期,并用 MyDate 函数格式化为 年-月-日

搜索结果分页

<div class="page-nav">
    {dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}
</div>
  • {dede:pagelist}:用于生成分页链接的标签。
  • listsize='4':显示页码的数量,... 3 4 [5] 6 7 ...
  • listitem='...':定义分页组件的显示项。
    • info:显示总页数、当前页数等信息(如“共10页”)。
    • index:返回首页链接。
    • pre:上一页链接。
    • next:下一页链接。
    • end:末页链接。
    • pageno:页码数字。

高级用法:按栏目搜索

如果您希望用户可以在特定栏目内进行搜索,可以在搜索表单中添加一个栏目选择下拉框。

修改搜索表单代码:

<form name="formsearch" action="{dede:global.cfg_cmsurl/}/plus/search.php" method="get">
    <input type="hidden" name="kwtype" value="0" />
    <input type="text" name="q" class="search-input" placeholder="请输入搜索关键字" value="{dede:global name='keyword'/}">
    <!-- 新增:栏目选择下拉框 -->
    <select name="typeid" style="margin-left: 10px;">
        <option value="0">全站搜索</option>
        {dede:channel type='top' currentstyle="<option value='~id~' selected>~typename~</option>"}
        <option value='[field:id/]'>[field:typename/]</option>
        {/dede:channel}
    </select>
    <button type="submit" class="search-btn">搜索</button>
</form>
  • <select name="typeid">:添加一个名为 typeid 的下拉选择框。
  • {dede:channel type='top' ...}:调用所有顶级栏目作为选项。
  • value="0"typeid=0 代表在全站范围内搜索。
  • 当用户选择某个栏目并提交时,URL 会变成 .../plus/search.php?q=关键字&typeid=栏目IDsearch.php 会自动根据这个 typeid 参数来限定搜索范围。

注意事项

  1. 文件路径:确保 action 中的 plus/search.php 路径正确,如果您的网站安装在子目录,需要相应调整,/your_site/plus/search.php
  2. 模板标签:在搜索结果页中,请务必使用 {dede:list} 而不是 {dede:arclist} 来调用列表数据。
  3. 分页问题:如果分页不显示,请检查您的 list 标签是否正确闭合,以及 pagesize 是否设置了一个合理的数值。
  4. SEO优化<title><meta description> 中动态插入 {dede:global name='keyword'/} 是很好的SEO实践,能让每个搜索结果页都针对特定关键词进行优化。

通过以上步骤,您就可以在织梦CMS中创建一个功能完善、用户体验良好的搜索页面了。

-- 展开阅读全文 --
头像
dede idlist
« 上一篇 03-29
织梦采集插件怎么使用
下一篇 » 03-29

相关文章

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

目录[+]