沃梦达 / IT编程 / CMS教程 / 正文

织梦DedeCMS搜索指定多个栏目文档的办法

针对织梦高级开发教程会用到,指定栏目搜索及多个栏目合并搜索的要求。织梦DedeCMS默认的搜索可以搜索全部栏目或者指定的搜索某一个栏目,不能搜索指定的多个栏目,需要修改后台文件才能实现。 1、在搜索框表单里加个typeid提交过去,例如

针对织梦高级开发教程会用到,指定栏目搜索及多个栏目合并搜索的要求。织梦DedeCMS默认的搜索可以搜索全部栏目或者指定的搜索某一个栏目,不能搜索指定的多个栏目,需要修改后台文件才能实现。
1、在搜索框表单里加个typeid提交过去,例如:
<form name="search" action="/plus/search.php"> 
<input type="hidden" name="typeid" value="1,2,3">
</form>
2、打开/plus/search.php找到
$typeid = (isset($typeid) && is_numeric($typeid)) ? $typeid : 0;
删除这一行后,继续找到,删除这一行
$typeid = intval($typeid);
3、打开 /include/arc.searchview.class.php 找到:
$ksqls[] = " arc.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).") ";
            }
 

本文标题为:织梦DedeCMS搜索指定多个栏目文档的办法