接下来我将详细讲解如何使用帝国CMS自定义字段实现价格区域范围筛选的方法。
问题分析
对于一些电商网站或者房产网站,需要支持用户根据价格区间进行筛选。但是,帝国CMS默认的文章模型并不提供价格区间筛选功能,需要进行自定义字段的开发实现。
实现步骤
1. 添加自定义字段
在后台管理中,进入“模型管理”页面,选择需要添加筛选功能的文章类型的“字段设置”选项卡,点击“添加字段”,在弹出的添加字段对话框中填写字段信息。
例如,我们可以添加一个名为“价格区间”的字段,字段类型选择为“组合框”,设置选项的值如下:
0-500|0~500元
500-1000|500~1000元
1000-2000|1000~2000元
2000-5000|2000~5000元
5000-10000|5000~10000元
10000-20000|10000~20000元
20000-50000|20000~50000元
50000-100000|50000~100000元
100000-0|100000元以上
2. 编写筛选逻辑
在模板文件中,可以使用 iurl()
函数将参数进行拼接生成页面URL,并使用 iparse()
函数解析URL为链接地址。
示例代码如下:
<form action="{$GLOBALS['cfg_cmsurl']}{dede:type}[field:typeid/]" method="get">
<select name="price">
<option value="">所有价格</option>
<option value="0-500"{:GetPriceUrl('0-500')}>0~500元</option>
<option value="500-1000"{:GetPriceUrl('500-1000')}>500~1000元</option>
<option value="1000-2000"{:GetPriceUrl('1000-2000')}>1000~2000元</option>
<option value="2000-5000"{:GetPriceUrl('2000-5000')}>2000~5000元</option>
<option value="5000-10000"{:GetPriceUrl('5000-10000')}>5000~10000元</option>
<option value="10000-20000"{:GetPriceUrl('10000-20000')}>10000~20000元</option>
<option value="20000-50000"{:GetPriceUrl('20000-50000')}>20000~50000元</option>
<option value="50000-100000"{:GetPriceUrl('50000-100000')}>50000~100000元</option>
<option value="100000-0"{:GetPriceUrl('100000-0')}>100000元以上</option>
</select>
<button type="submit">筛选</button>
</form>
// 函数 GetPriceUrl 的定义
function GetPriceUrl($value)
{
if(isset($_GET['price']) && $_GET['price'] == $value)
return ' selected';
else
{
$url = $GLOBALS['cfg_basehost'].'/search.php';
return ' value="'.urlencode($value).'" '.($url.'?'.$_SERVER['QUERY_STRING'] == $url.'?price='.$value ? 'selected' : '');
}
}
在上述代码中,我们定义 GetPriceUrl 函数去输出筛选下拉框所需的 HTML 代码。该函数的逻辑是,当url中存在"price"参数时,判断其值是否与当前选项一致,一致则输出"selected"属性,反之为其添加URL参数并输出。
使用 iparse()
函数解析URL的方法如下:
<a href="{:iparse($fieldset['field']['_byline'])}?price={$field.price}">查看</a>
在上述代码中,$fieldset['field']['_byline']
表示使用 fieldset
函数获取当前文章的URL,并使用 iparse()
函数对其中的 _byline
参数进行解析,然后在这个URL的基础上添加 price
参数的值。
示例说明
例如,我们添加了一个价格区间为0~500元的文章,并在前台页面添加了筛选下拉框,用户选择"0~500元",系统会自动判断当 ";price=0-500"的参数出现在URL中时,输出对应的选项,并根据选项中的价格区间去搜索符合条件的文章。可以参考下面这个页面的实现效果:
http://www.dearcat.cn/search.php?typeid=1&price=5000-10000
在此页面中,用户可以根据价格区间筛选类型为“家居产品”的文章。用户选中某个价格区间后,系统会自动根据选项中的价格区间去搜索符合条件的文章。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:帝国cms自定义字段实现价格区域范围筛选的方法 - Python技术站