织梦DedeCMS搜索功能支持指定多个栏目的修改方法

织梦默认的搜索功能只能搜索全部栏目或者指定某一个栏目,无法直接搜索指定的多个栏目。通过以下修改,可以实现搜索指定多个栏目的功能。

第一步:在搜索表单中添加typeid参数

在搜索框表单中增加一个隐藏的typeid字段,将需要搜索的多个栏目ID以逗号分隔的形式提交。例如搜索栏目ID为1、2、3的内容,表单代码如下:

<form name="formsearch" action="/plus/search.php">
<input type="hidden" name="typeid" value="1,2,3">
</form>

第二步:修改/plus/search.php文件

打开 /plus/search.php 文件,找到以下两行代码并删除:

$typeid = (isset($typeid) && is_numeric($typeid)) ? $typeid : 0;
$typeid = intval($typeid);

删除这两行后,搜索程序才能正确接收多个栏目ID的字符串。

第三步:修改/include/arc.searchview.class.php文件

打开 /include/arc.searchview.class.php 文件,找到以下代码行:

$ksqls[] = " typeid IN (".GetSonIds($this->TypeID).") ";

将其替换为以下代码:

//指定了多个栏目时
if( preg_match('#,#', $this->TypeID) )
{
    $typeids = explode(',', $this->TypeID);
    foreach($typeids as $ttid) {
        $typeidss[] = GetSonIds($ttid);
    }
    $typeidStr = join(',', $typeidss);
    $typeidss = explode(',', $typeidStr);
    $typeidssok = array_unique($typeidss);
    $typeid = join(',', $typeidssok);
    $ksqls[] = " arc.typeid IN ($typeid) ";
}
else
{
    $ksqls[] = " arc.typeid IN (".GetSonIds($this->TypeID).") ";
}

修改完成后,保存文件。此时织梦搜索功能即可支持指定多个栏目进行搜索,同时兼容原有的单个栏目搜索方式。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。