jizhicms 自定义筛选功能

曹え 5811 发布于:2024-11-26 03:43:14

image.png


这是一个侧边的筛选,每一个分类可以选一个选项,最后用js遍历生成url,跳转


下面是js和html代码

<!--筛选-->
<div class="menu_product">
<div class="h3">查找产品</div>
{screen molds="article" orderby="orders desc"  as="s"}
{php
$get = $_GET[$S['field']];
echo $get;
/}
<dl id="ToPower" rel="{$s['field']}">
<dt>{$s['fieldname']}</dt>
{foreach $s['list'] as $ss}
<dd cid="10" field="{$filters[$s['field']]}" class="ToPower"><a href="javascript:;">{$ss['value']}</a></dd>
{/foreach}
</dl>
{/screen}
</div>

<script>
// 点击 a 标签时
$('.menu_product a').click(function() {
var $a = $(this);
var $dd = $a.closest('dd');
var $dl = $dd.closest('dl');
var rel = $dl.attr('rel');
var text = $a.text().trim();

// 如果 a 标签有 on 这个 class,则去掉 on 这个 class
if ($dd.hasClass('on')) {
$dd.removeClass('on');
} else {
// 如果 a 标签没有 on 这个 class,则添加 on 这个 class
$dd.addClass('on');
}

// 构建新的 URL 参数
var params = {};
$('.menu_product a').each(function() {
var $a = $(this);
var $dd = $a.closest('dd');
var $dl = $dd.closest('dl');
var rel = $dl.attr('rel');
var text = $a.text().trim();

// 如果 a 标签上有 on 这个 class
if ($dd.hasClass('on')) {
params[rel] = text;
}
});

// 构建 URL 参数
var queryString = $.param(params);
var newUrl = window.location.pathname + '?' + queryString;

// 跳转到新的 URL
window.location.href = newUrl;
});

// 页面加载时根据 URL 参数设置 a 标签的 class
var urlParams = new URLSearchParams(window.location.search);
$('.menu_product a').each(function() {
var $a = $(this);
var $dd = $a.closest('dd');
var $dl = $dd.closest('dl');
var rel = $dl.attr('rel');
var text = $a.text().trim();

// 如果 URL 参数中存在对应的值
if (urlParams.get(rel) === text) {
$dd.addClass('on');
} else {
$dd.removeClass('on');
}
});
</script>


下面是需要在 Home 控制器中添加筛选查询


image.png


php代码如下,遍历url中的参数,最终组合成 like 查询语句

$queryString = $_SERVER['QUERY_STRING'];

if($queryString){
// 解析查询字符串为关联数组
parse_str($queryString, $params);

// 初始化查询条件数组
$conditions = [];

// 遍历参数并生成查询条件
foreach ($params as $key => $value) {
// 使用 LIKE 查询条件
$conditions[] = "`$key` LIKE '%$value%'";
}

// 将查询条件数组连接成一个字符串
$whereClause = implode(' and ', $conditions);

$sql.=' and '.$whereClause;
}


觉得有用请点个赞吧!
0 63