|
在我们制作分类信息的dedecms模板时候,经常会碰到需要对附加表中的字段进行搜索,然而织梦官方也没有给出什么好的方法
以下是模板居研究的方法:
首先 是新建模型:商标信息 模型;附加表为dede_shangbiao ,附加字段先添加了2个,sbID(商标ID)和chuangyi(创意说明)
然后 打开需要搜索的模板,我用的是通用的模板,head.htm 稍后有图说明,
<form action="{dede:global.cfg_cmsurl /}/plus/advancedsearch.php" method="post">
<input type="hidden" name="mid" value="100" /> //100是模型的ID号
<input type="hidden" name="dopost" value="search" />
<input name="keyword" type="text" class="search-keyword" id="search-keyword" />
{dede:php}
$tl = new TypeLink(100);
$typeOptions = $tl->GetOptionArray(0,0,100);
echo "<select name='typeid' style='width:200'>\r\n";
echo "<option value='0' selected>--不限栏目--</option>\r\n";
echo $typeOptions;
echo "</select>";
{/dede:php}
<select name="serachvalue" class="search-option">
<option value="q" selected='1'>商标名称</option>
<option value="sbid">商标ID</option>
<option value="chuangyi">创意说明</option>
</select>
<button type="submit" class="search-submit">Search Now</button>
</form>
最后是修改plus/advancedsearch.php 文件
找到$q = stripslashes($q); 大概在43行左右在其上面添加
if($_POST["serachvalue"] == "q"){$q=$keyword;}
elseif($_POST["serachvalue"] == "sbid"){$sbid=$keyword;}
elseif($_POST["serachvalue"] == "chuangyi"){$chuangyi=$keyword;}
判断是根据什么搜索的,
找到if($q != ''){$where .= " and main.title like '%$q%' ";}修改为
if($q != ''){$where .= " and main.title like '%$q%' ";}
elseif($sbid != ''){$where.=" and addon.sbID='$sbid'";}
elseif($chuangyi != ''){$where .="and addon.chuangyi like '%$chuangyi%'";}
如果是搜索标题的话查询的是主表,如是搜索商标ID和创意说明的 则是搜索的附加表
就这样就完成了。
(责任编辑:admin) |