dede搜索只调用指定板块内容

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

这里为您提供两种最常用和有效的方法,强烈推荐使用方法一,因为它更安全、更符合织梦的设计理念。

dede搜索只调用指定板块内容
(图片来源网络,侵删)

修改搜索模板文件(推荐,更安全)

这种方法的核心思想是:在用户提交搜索请求时,通过隐藏表单字段 typeid 来指定要搜索的栏目 ID,织梦的搜索系统会自动识别这个参数,并将其作为搜索条件之一。

优点:

  • 无需修改核心文件:避免了因升级 DedeCMS 而导致修改的代码被覆盖的风险。
  • 灵活可控:可以针对不同的搜索页面设置不同的栏目,或者提供一个“全站搜索”和“指定栏目搜索”的切换选项。
  • 对系统性能影响小

操作步骤:

第 1 步:确定要搜索的栏目 ID

登录您的 DedeCMS 后台,找到您希望搜索结果仅限于此的栏目,记下它的 栏目 ID

dede搜索只调用指定板块内容
(图片来源网络,侵删)

假设我们要只搜索“产品中心”这个栏目,其 ID 为 5

第 2 步:修改搜索模板文件

  1. 在您的网站根目录下,找到搜索模板文件,默认路径是 /templets/default/search.htm,如果您使用了其他模板,请找到您对应的搜索模板文件。
  2. 用代码编辑器(如 VS Code, Sublime Text, Dreamweaver)打开这个文件。
  3. 找到搜索表单 <form> 标签,在 <input type="hidden" name="kwtype" value="0" /> 这类隐藏域的后面,添加一个新的隐藏域nametypeidvalue 为您在第 1 步中获取的栏目 ID。

修改前的代码示例:

<form name="formsearch" action="{dede:global.cfg_cmsurl/}/search.php">
    <div>
        <input type="hidden" name="kwtype" value="0" />
        <input type="hidden" name="searchtype" value="titlekeyword" />
        <input type="text" name="q" class="search-keyword" id="search-keyword" />
        <button type="submit" class="search-submit">搜索</button>
    </div>
</form>

修改后的代码示例(假设栏目ID为5):

<form name="formsearch" action="{dede:global.cfg_cmsurl/}/search.php">
    <div>
        <input type="hidden" name="kwtype" value="0" />
        <input type="hidden" name="searchtype" value="titlekeyword" />
        <!-- 在这里添加 typeid 隐藏域 -->
        <input type="hidden" name="typeid" value="5" /> 
        <input type="text" name="q" class="search-keyword" id="search-keyword" />
        <button type="submit" class="search-submit">搜索</button>
    </div>
</form>

第 3 步:清空缓存并测试

  1. 登录 DedeCMS 后台,点击顶部菜单的 “生成” -> “一键更新站点”,然后选择 “更新HTML”“更新缓存”,执行更新操作。
  2. 清除浏览器缓存,或者使用 Ctrl + F5 强制刷新页面。
  3. 访问您的搜索页面,输入任意关键词进行搜索,搜索结果应该只包含您指定栏目(ID为5)下的内容了。

修改搜索核心文件(不推荐,有风险)

这种方法是直接修改 DedeCMS 搜索的核心逻辑,强制所有搜索都只针对指定栏目。

dede搜索只调用指定板块内容
(图片来源网络,侵删)

警告:

  • 有升级风险:每次 DedeCMS 升级时,这个文件可能会被覆盖,导致您的修改丢失,需要重新修改。
  • 影响全局:此修改会作用于网站所有的搜索行为,包括可能存在的其他搜索调用,无法灵活切换。
  • 请谨慎操作:修改前请务必备份原始文件!

操作步骤:

第 1 步:备份文件

在修改之前,请务必备份 /include/arc.searchview.class.php 文件。

第 2 步:修改核心文件

  1. 用代码编辑器打开 /include/arc.searchview.class.php 文件。
  2. 在文件中搜索 function GetKeywordSql() 函数。
  3. 在这个函数内部,找到构建 SQL 查询语句 $this->AddSql = " arc.id<>0 " 的地方。
  4. 在这一行代码的后面,添加 AND arc.typeid = '5',将 5 替换为您希望搜索的栏目 ID。

修改前的代码片段:

function GetKeywordSql()
{
    // ... 其他代码 ...
    $this->AddSql = " arc.id<>0 ";
    // ... 其他代码 ...
}

修改后的代码片段(假设栏目ID为5):

function GetKeywordSql()
{
    // ... 其他代码 ...
    $this->AddSql = " arc.id<>0 AND arc.typeid = '5' "; // 在这里添加栏目ID限制
    // ... 其他代码 ...
}

第 3 步:清空缓存并测试

与方法一的最后一步相同,清空网站缓存和浏览器缓存,然后测试搜索功能。


总结与对比

特性 方法一 (修改模板) 方法二 (修改核心)
安全性 ,不涉及核心文件,升级无忧 ,升级后代码会被覆盖
灵活性 ,可针对不同表单设置不同栏目 ,全局生效,无法切换
维护性 ,修改简单,易于理解 ,需要记住修改点,维护麻烦
适用场景 绝大多数情况,特别是需要灵活控制的场景 全站搜索永远只在一个栏目下,且永不升级的网站

除非您有非常特殊且固定的需求,否则请优先选择方法一,它是最规范、最安全、最灵活的实现方式。

-- 展开阅读全文 --
头像
dede gbk转utf8工具
« 上一篇 01-02
织梦无法运行install
下一篇 » 01-02

相关文章

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

目录[+]