如何在织梦DEDECMS网站中仅搜索特定栏目的文章?

avatar
作者
筋斗云
阅读量:0
在织梦DEDECMS中,要实现只搜索指定栏目的文章,可以通过自定义搜索函数或修改搜索模块的代码来实现。

在织梦DEDECMS中,实现只搜索指定栏目文章的方法有多种,以下是几种常见的方法及其详细步骤:

方法一:通过修改arc.searchview.class.php文件

1、找到并打开文件:你需要找到/include/文件夹里面的arc.searchview.class.php文件。

如何在织梦DEDECMS网站中仅搜索特定栏目的文章?

2、定位并修改SQL语句:在该文件中,大约在300行和470行左右,有两个SQL语句用于统计列表里的记录和执行搜索操作,你需要在这些SQL语句后面加上条件判断,以排除你不想要搜索的栏目。

你可以将以下两行代码:

```php

//统计列表里的记录

$cquery = "Select * Fromdede_archives arc where {$this>AddSql}";

//搜索

$query = "Select arc.*,act.typedir,act.typename,act.isdefault,act.defaultname,act.namerule, act.namerule2,act.ispart,act.moresite,act.siteurl,act.sitepath fromdede_archives arc left joindede_arctype act on arc.typeid=act.id where {$this>AddSql} $ordersql limit $limitstart,$row";

```

修改为:

```php

//统计列表里的记录

$cquery = "Select * Fromdede_archives arc where arc.typeid not in (1,2,3...) and {$this>AddSql}";

//搜索

$query = "Select arc.*,act.typedir,act.typename,act.isdefault,act.defaultname,act.namerule, act.namerule2,act.ispart,act.moresite,act.siteurl,act.sitepath fromdede_archives arc left joindede_arctype act on arc.typeid=act.id where act.id not in (4,5,6....) and {$this>AddSql} $ordersql limit $limitstart,$row";

```

括号里的数字代表你不想要搜索的栏目ID,你可以根据实际情况进行替换。

方法二:通过修改plus/search.php文件

1、找到并打开文件:打开/plus/search.php文件。

2、定位并添加指定栏目ID:在该文件中找到94行,即$sp = new SearchView($typeid,$keyword,$orderby,$channeltype,$searchtype,$starttime,$pagesize,$kwtype,$mid);这一行,在前面加上$typeid=xxx;,其中xxx代表你想要搜索的栏目ID。

这样,你就可以实现只搜索指定的栏目ID了,如果你想要搜索多个栏目,可以将其他的栏目移动到这个顶级栏目下。

方法三:通过修改模板搜索代码

1、找到并打开模板文件:打开你的模板文件,找到搜索框表单的代码。

2、添加typeid参数:在搜索框表单中加入一个隐藏的input标签,其name属性为“typeid”,value属性为你想要搜索的栏目ID或多个栏目ID(用逗号分隔)。

你可以添加以下代码:

```html

<form name="formsearch" action="/plus/search.php">

<input type="hidden" name="typeid" value="1,2,3">

<!其他搜索框代码 >

</form>

```

value属性的值“1,2,3”代表你想要搜索的栏目ID,你可以根据实际情况进行替换。

FAQs

问题一:为什么修改arc.searchview.class.php文件后,搜索结果仍然包含不想要的栏目?

解答:这可能是因为你在修改SQL语句时,没有正确设置排除的栏目ID,请确保你修改的SQL语句中的not in子句包含了所有你不想要搜索的栏目ID,并且这些ID是正确的,如果你在其他地方也使用了搜索功能,可能也需要相应地修改那里的代码以确保只搜索指定的栏目。

问题二:如何在搜索结果中显示更多信息?

解答:如果你想要在搜索结果中显示更多信息,可以考虑修改搜索页模板(如search.htm)或相关PHP文件来增加所需的字段,你可以在模板文件中添加或修改标签以显示更多的字段信息,或者在PHP文件中调整查询语句以获取更多的数据字段,在修改之前最好备份原始文件以防万一出现问题。


织梦DEDECMS网站只搜索指定栏目文章的办法

1. 引言

在织梦DEDECMS网站中,如果只想搜索指定栏目的文章,可以通过修改或添加一些代码来实现,以下是一份详细的步骤说明。

2. 准备工作

确保你有一个织梦DEDECMS的备份,以防修改后出现问题。

登录到织梦后台,准备进行代码修改。

3. 修改或添加代码

3.1 修改搜索模块

1、找到织梦的搜索模块文件,通常位于include/arcsearch.class.php

2、打开文件,找到GetSearchSql函数。

3、在该函数中,找到生成搜索SQL语句的部分。

4、在生成SQL语句的地方,添加一个条件来限制搜索的栏目ID,如果你想搜索栏目ID为1的文章,可以添加以下代码:

 if($catid != 0) {     $where .= " AND arc.catid = '{$catid}' "; }

5、保存文件。

3.2 添加自定义搜索参数

1、在织梦后台,进入“系统设置” > “基本设置”。

2、在“自定义参数”中添加一个新的参数,例如custom_catid

3、保存设置。

3.3 获取自定义参数

1、在搜索页面的表单处理代码中,获取自定义参数的值。

2、以下是一个示例代码:

 $catid = (isset($_GET['custom_catid']) && $_GET['custom_catid'] != '') ? intval($_GET['custom_catid']) : 0;

4. 测试与验证

1、重新发布织梦网站,确保修改生效。

2、使用搜索功能,尝试搜索指定栏目的文章,确认是否只搜索了指定栏目的文章。

5. 归纳

通过上述步骤,你可以在织梦DEDECMS网站中实现只搜索指定栏目的文章,这种方法简单有效,可以帮助网站管理员更好地管理和搜索内容。

是织梦DEDECMS网站只搜索指定栏目文章的详细步骤,希望对你有所帮助。

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!