2个回答
展开全部
织梦多条件筛选功能实现
我们已经在前台实现了筛选的功能了,虽然价格、尺寸两个类型没有添加,这是因为我是要把他们固定做好,因为他们在模型中使用的类型是数字类型,并非其他三个(品牌、平台以及显卡)是option类型。
既然前台已经做好了,那我们就开始后台的功能了。
具体的后台我使用的是advancesearch.php这个搜索的功能来实现的。
我们复制一个advancesearch.php的模板出来,默认的advanceserach.php的模板是/templets/default/advancesearch.htm,我们把这个模板,复制到我们的自定义的模板文件夹/templets/jingdong里面,名字就叫做filter_tmp.htm。
然后进入后台,在“内容模型管理”里面选择你所需要搜索的模型,然后点击这个模型后面的放大镜图标,在“附件表可供自定义搜索的字段”中,勾选上你需要搜索的字段,自定义搜索结果模板页,写上我们刚刚复制的模板名称,叫做filter_tmp.htm,确定。
这里可以测试一下,能否正常使用搜索。
不过好像是织梦系统自带的不可以的,我试了好多次都不行,追踪了一下,好像并没有查询附加表,于是在advancesearch.php的218行,原来的代码是
$query = "SELECT main.id AS aid,main.*,main.description AS description1, type.*
FROM $maintable main
LEFT JOIN #@__arctype type ON type.id = main.typeid
LEFT JOIN $addontable addon ON addon.aid = main.id
$where $orderby";
在type.*的后面添加行一个addon.*,也就是变成如下的代码
$query = "SELECT main.id AS aid,main.*,main.description AS description1, type.*,addon.*
FROM $maintable main
LEFT JOIN #@__arctype type ON type.id = main.typeid
LEFT JOIN $addontable addon ON addon.aid = main.id
$where $orderby";
然后还有124行添加 ${$var}=iconv(“utf-8″,”gb2312″,${$var}); 否则会导致中文乱码。
还有一个就是如果使用()英文括号的话,要小心了,因为会被安全sql过滤掉。
下面,是我简单的制作了下filter_tmp.htm,大家可以参考使用。
{dede:datalist}
<div style="border: 1px solid #CCC;margin:20px 0;">
<strong>标题:</strong>{dede:field.title/}<br />
<strong>品牌:</strong>{dede:field.pinpai/}<br />
<strong>价格:</strong>{dede:field.jiage/}<br />
<strong>尺寸:</strong>{dede:field.chicun/}<br />
<strong>平台:</strong>{dede:field.pingtai/}<br />
<strong>显卡:</strong>{dede:field.xianka/}<br />
</div>
{/dede:datalist}
{dede:pagelist listsize='5'/}
但是我们最终是要把这个页面“嵌”到filter.htm中,也就是最终的列表页里面。
现在我们打开filter这个模板文件,在最下面加一个div,id设置为result,这个是用来存放最后筛选出来的结果的地方。
然后打开filter.js,下面重点都是在这个js里面写的。
我们已经在前台实现了筛选的功能了,虽然价格、尺寸两个类型没有添加,这是因为我是要把他们固定做好,因为他们在模型中使用的类型是数字类型,并非其他三个(品牌、平台以及显卡)是option类型。
既然前台已经做好了,那我们就开始后台的功能了。
具体的后台我使用的是advancesearch.php这个搜索的功能来实现的。
我们复制一个advancesearch.php的模板出来,默认的advanceserach.php的模板是/templets/default/advancesearch.htm,我们把这个模板,复制到我们的自定义的模板文件夹/templets/jingdong里面,名字就叫做filter_tmp.htm。
然后进入后台,在“内容模型管理”里面选择你所需要搜索的模型,然后点击这个模型后面的放大镜图标,在“附件表可供自定义搜索的字段”中,勾选上你需要搜索的字段,自定义搜索结果模板页,写上我们刚刚复制的模板名称,叫做filter_tmp.htm,确定。
这里可以测试一下,能否正常使用搜索。
不过好像是织梦系统自带的不可以的,我试了好多次都不行,追踪了一下,好像并没有查询附加表,于是在advancesearch.php的218行,原来的代码是
$query = "SELECT main.id AS aid,main.*,main.description AS description1, type.*
FROM $maintable main
LEFT JOIN #@__arctype type ON type.id = main.typeid
LEFT JOIN $addontable addon ON addon.aid = main.id
$where $orderby";
在type.*的后面添加行一个addon.*,也就是变成如下的代码
$query = "SELECT main.id AS aid,main.*,main.description AS description1, type.*,addon.*
FROM $maintable main
LEFT JOIN #@__arctype type ON type.id = main.typeid
LEFT JOIN $addontable addon ON addon.aid = main.id
$where $orderby";
然后还有124行添加 ${$var}=iconv(“utf-8″,”gb2312″,${$var}); 否则会导致中文乱码。
还有一个就是如果使用()英文括号的话,要小心了,因为会被安全sql过滤掉。
下面,是我简单的制作了下filter_tmp.htm,大家可以参考使用。
{dede:datalist}
<div style="border: 1px solid #CCC;margin:20px 0;">
<strong>标题:</strong>{dede:field.title/}<br />
<strong>品牌:</strong>{dede:field.pinpai/}<br />
<strong>价格:</strong>{dede:field.jiage/}<br />
<strong>尺寸:</strong>{dede:field.chicun/}<br />
<strong>平台:</strong>{dede:field.pingtai/}<br />
<strong>显卡:</strong>{dede:field.xianka/}<br />
</div>
{/dede:datalist}
{dede:pagelist listsize='5'/}
但是我们最终是要把这个页面“嵌”到filter.htm中,也就是最终的列表页里面。
现在我们打开filter这个模板文件,在最下面加一个div,id设置为result,这个是用来存放最后筛选出来的结果的地方。
然后打开filter.js,下面重点都是在这个js里面写的。
追问
你发的这个我在网上也看大了,他只是在前台实现,套织梦了怎么实现?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询