一、在模型管理里面勾选要进行高级查询的字段:
后台->核心->内容模型管理
根据你添加字段的频道,点击放大镜,进入高级搜索(精确搜索)界面:
这里自定义字段以“测试1”、“测试2”为例,然后粘贴到你需要搜索的模板中,样式自行调整。
二、修改搜索模板
和普通搜索的search.htm一样,advancedsearch高级搜索也是有模板的,默认很丑,下面是修改方法:
找到 plus/advancedsearch.php
找到末尾如下代码
if(file_exists(DEDEROOT."/templets/default/$template")) { $templatefile = DEDEROOT."/templets/default/$template"; } else { $templatefile = DEDEROOT."/templets/default/advancedsearch.htm"; }“default”为系统默认模板路径,根据自己模板修改即可(备注:advancedsearch.htm 需要拷贝到自己模板下)
这就完成了。
三、让自定义搜索支持头部、尾部、channel、channelartlist:
在advancedsearch.htm 头部标签 换成:
<?php pasterTempletDiy("default/head.htm");?>尾部标签换成:
<?php pasterTempletDiy("default/footer.htm");?>/include/extend.func.php 最后边增加
function pasterTempletDiy($path){ require_once(DEDEINC."/arc.partview.class.php"); global $cfg_basedir,$cfg_templets_dir; $tmpfile = $cfg_basedir.$cfg_templets_dir."/".$path; //模版文件的路径 $dtp = new PartView(); $dtp->SetTemplet($tmpfile); $dtp->Display(); }这样就搞定了
四、在模板advancedsearch.htm如何显示自定义字段:
/plus/advancedsearch.php 找到如下代码:
if($mid < -1){ $where = str_replace('main.', 'addon.', $where); $orderby = str_replace('main.', 'addon.', $orderby); $query = "SELECT addon.*, arctype.* FROM $addontable addon LEFT JOIN dede_arctype arctype ON arctype.id = addon.typeid $where $orderby"; } else { $query = "SELECT main.id AS aid,main.*,main.description AS description1, type.* FROM $maintable main LEFT JOIN dede_arctype type ON type.id = main.typeid LEFT JOIN $addontable addon ON addon.aid = main.id $where $orderby"; }将:
$query = "SELECT main.id AS aid,main.*,main.description AS description1, type.*改成
$query = "SELECT addon.*,main.id AS aid,main.*,main.description AS description1, type.*然后,在模板advancedsearch.htm中使用:
{dede:field.自定义字段/}调用即可。