Dedecms搜索原代码
<form name="formsearch" action="{dede:global.cfg_cmsurl/}/plus/search.php">
<div class="form"><h4>搜索</h4><input type="hidden" name="kwtype" value="0" /><input name="q" type="text" class="search-keyword" id="search-keyword" value="在这里搜索..." onfocus="if(this.value=='在这里搜索...'){this.value='';}" onblur="if(this.value==''){this.value='在这里搜索...';}" /><select name="searchtype" class="search-option" id="search-option"><option value="title" selected='1'>检索标题</option><option value="titlekeyword">智能模糊</option></select><button type="submit" class="search-submit">搜索</button>
</div>
</form>
一、指定搜索单个栏目
方法一:下拉<select>表单可选择指定栏目,动态获取栏目
将下代码插入到<form></form>之间(注意:<form></form>里面的内容,)
<select name='typeid' ><option value='0' selected>--不限栏目--</option>{dede:channelartlist typeid="top"}{dede:type} <option value='[field:id/]'>[field:typename/]</option>{/dede:type}{dede:channel type="son" noself="yes"}<option value='[field:id/]'>- [field:typename/]</option>{/dede:channel}{/dede:channelartlist}
</select>
方法二:下拉<select>表单可选择指定栏目,固定栏目
将下代码插入到<form></form>之间
<select name='typeid' >
<option value='0' selected>--不限栏目--</option>
<option value='1'>栏目名称</option>
<option value='99'>插入更多……</option>
</select>
其中【value="1"】修改成栏目ID
方法二:<input>表单固定指定栏目
将下代码插入到<form></form>之间
<input type="hidden" name="typeid" value="1">
其中【value="1"】修改成栏目ID
二、指定搜索多个栏目
第一步、将下代码插入到<form></form>之间
<input type="hidden" name="typeid" value="1&2&3">
其中【value="1&2&3"】修改成栏目ID,每个ID用【&】分开
第二步、修改【/plus/search.php】文件
1、在文件里找到下面这段代码,并删除即可
$typeid = (isset($typeid) && is_numeric($typeid)) ? $typeid : 0;
2、完成,这样就可以搜索指定的多个栏目的文章了。
三、指定隐藏单个或多个栏目
1、如果你想要在搜索中屏蔽某些栏目,你可以通过修改搜索模块实现
2、打开文件【/include/arc.searchview.class】
3、搜索下面代码
$query = "SELECT arc.*,act.typedir,act.typename,act.isdefault,act.defaultname,act.namerule,
act.namerule2,act.ispart,act.moresite,act.siteurl,act.sitepath
FROM `{$this->AddTable}` arc LEFT JOIN `#@__arctype` act ON arc.typeid=act.id
WHERE {$this->AddSql} $ordersql LIMIT $limitstart,$row";
4、替换成下面代码
$query = "Select arc.*,act.typedir,act.typename,act.isdefault,act.defaultname,act.namerule,
act.namerule2,act.ispart,act.moresite,act.siteurl,act.sitepath
from `#@__archives` arc left join `#@__arctype` act on arc.typeid=act.id
where act.id not in (1,2,3) and {$this->AddSql} $ordersql limit $limitstart,$row";
5、其中【(1,2,3)】就是要屏蔽的栏目ID
6、注意,这种方法有个问题就是与翻页对不上,他只是不显示出数据列表,但还是会有翻页。比如你搜索一个关键词,这个关键词正好在屏蔽的栏目里有100条数据,这样就会出现列表里没数据,但是翻页数却有10页;