业务经理

微信扫描以上二维码

028-61286886

技术咨询

如何用 主栏目 和 副栏目 构造筛选器

迅睿框架 更新 2026-09-14 19:04:29 耗子舞

共享栏目 A 下面有  子栏目 a1,a2,a3,a4 , 作为文章的主栏目单选

共享栏目 B 下面 有  子栏目  b1,b2,b3,b4,   做为文章的副栏目多选


 如何用  a 栏目 和 b 栏目 构造筛选器??


方案

  • 社区管理员 #1 · 2026-08-11 21:54:15
    构造筛选器是指什么意思
  • 耗子舞 #2 · 2026-08-11 22:17:33
    社区管理员 就是这样的页面文章筛选
    主栏目A: a1 a2 a3副栏目B: b1 b2 b3 b4联动菜单C: c1 c2 c3 c4联动菜单D: d1 d2 d3 d4---------文章列表-------------文章1文章2文章3。。。。。。-------------------------分页 12345678


    单独 联动菜单+主栏目, 联动菜单+副栏目 我都解决可以了, 要想 主栏目+副栏目+ 联动菜单 一起筛选,就不行了
  • 社区管理员 #3 · 2026-08-12 09:07:34
    副栏目字段是不是这样建的
    企业微信截图_5ab05dc6-6d23-4371-8ca2-bf16f1d8fbaf
  • 耗子舞 #4 · 2026-08-12 11:11:21
    社区管理员 是的, 我已经根据模版标签筛选器使用,完美实现: 副栏目+联动菜单 筛选, 主栏目+联动菜单筛选, 要两个合并起来就不行了


    image
  • 耗子舞 #5 · 2026-08-17 08:05:17
    是不是只能用联动多选替代了? 但后台提示 不建议这个字段用于筛选条件
  • 耗子舞 #6 · 2026-08-18 10:39:45
    <!--主栏目--> <div class="d-flex flex-stack"> <div class="d-flex align-items-center w-100 flex-wrap"> <a class="btn btn-sm {if !$cat || $cat.child}btn-primary{else}btn-outline-secondary{/if} fw-bold mx-2 my-2" href="{Router::search_url($params, 'catid', $parent.id)}">全部</a> {loop $related $t} {if $t.tid==1 && $t.mid==MOD_DIR} <a class="btn btn-sm {if $t.id==$cat.id}btn-primary{else}btn-outline-secondary{/if} fw-bold mx-2 my-2" href="{Router::search_url($params, 'catid', $t.id)}">{$t.name}</a> {/if} {/loop} </div> </div> <div class="separator separator-dashed my-3"></div><!--副栏目-->副栏目ID 是29 , 下面有多个栏目, 而且其中个别栏目下还有子栏目。 要求能层级筛选待添加…… <!-- 联动分类 --> <div class="d-flex flex-stack"> <div class="d-flex align-items-center w-100 flex-wrap"> <a class="btn btn-sm {if !$params.fenlei || dr_linkage('cpclass', $params.fenlei, 0, 'child')}btn-primary{else}btn-outline-secondary{/if} fw-bold mx-2 my-2" href="{dr_search_url($params, 'fenlei', NULL, 'cangpin')}">全部</a> {linkage code=cpclass pid=$params.fenlei} <a class="btn btn-sm {if $t.id==$params.fenlei}btn-primary{else}btn-outline-secondary{/if} fw-bold mx-2 my-2" href="{dr_search_url($params, 'fenlei', $t.id, 'cangpin')}">{$t.name}</a> {/linkage} </div> </div> <div class="separator separator-dashed my-3"></div> <!-- 联动来源 --> <div class="d-flex flex-stack"> <div class="d-flex align-items-center w-100 flex-wrap"> <a class="btn btn-sm {if !$params.source || dr_linkage('cpsource', $params.source, 0, 'child')}btn-primary{else}btn-outline-secondary{/if} fw-bold mx-2 my-2" href="{dr_search_url($params, 'source', NULL, 'cangpin')}">全部</a> {linkage code=cpsource pid=$params.source} <a class="btn btn-sm {if $t.id==$params.source}btn-primary{else}btn-outline-secondary{/if} fw-bold mx-2 my-2" href="{dr_search_url($params, 'source', $t.id, 'cangpin')}">{$t.name}</a> {/linkage} </div> </div> <div class="separator separator-dashed my-3"></div> <!-- 联动库位 --> <div class="d-flex flex-stack"> <div class="d-flex align-items-center w-100 flex-wrap"> <a class="btn btn-sm {if !$params.location || dr_linkage('cplocation', $params.location, 0, 'child')}btn-primary{else}btn-outline-secondary{/if} fw-bold mx-2 my-2" href="{dr_search_url($params, 'location', NULL, 'cangpin')}">全部</a> {linkage code=cplocation pid=$params.location} <a class="btn btn-sm {if $t.id==$params.location}btn-primary{else}btn-outline-secondary{/if} fw-bold mx-2 my-2" href="{dr_search_url($params, 'location', $t.id, 'cangpin')}">{$t.name}</a> {/linkage} </div> </div> <div class="separator separator-dashed my-3"></div>



    {php} $current_page = (int)\Phpcmf\Service::L('input')->get('page'); if ($current_page < 1) $current_page = 1; $page_size = 70; $sn = ($current_page - 1) * $page_size + 1; {/php}
    {search module=MOD_DIR id=$searchid total=$sototal order=$params.order ztld=$ztld_search catid=$params.catid catids=$catids page=1 pagesize=70 urlrule=$urlrule}
  • 优速软件工作室 #7 · 2026-08-19 09:35:12
    没看懂
  • 耗子舞 #8 · 2026-08-19 11:02:15
    优速软件工作室 我想构造这样的筛选器

    image
  • 耗子舞 #9 · 2026-08-28 09:42:28
    满意答案
    我自己解决了, 问了Deepseek 调整了一个星期了,实现 主栏目+副栏目+ 3个联动菜单 的条件筛选, 副栏目 catids 的父级递归 问题困扰了我好久,原来 子栏目之间要用%20|%20拼接,完整的筛选器 代码附上, 大家看看 有没有问题, 目前功能是满足了: 一件藏品: 正常在库(主栏目)+ 属于多个专题(副栏目)+ 所属分类(联动单选)+所属来源(联动单选)+ 所在库位(联动单选)期间,副栏目专题,我用 联动多选试过, 最后还是父级递归问题放弃了。
    image
    <!-- 筛选条件 --> <!-- 栏目转态 --> <div class="d-flex flex-stack"> <div class="d-flex align-items-center w-100 flex-wrap"> <a class="btn btn-sm {if !$cat || $cat.child}btn-primary{else}btn-outline-secondary{/if} fw-bold mx-2 my-2" href="{Router::search_url($params, 'catid', $parent.id)}">全部</a> {loop $related $t} {if $t.tid==1 && $t.mid==MOD_DIR} <a class="btn btn-sm {if $t.id==$cat.id}btn-primary{else}btn-outline-secondary{/if} fw-bold mx-2 my-2" href="{Router::search_url($params, 'catid', $t.id)}">{$t.name}</a> {/if} {/loop} </div> </div> <div class="separator separator-dashed my-3"></div> <!-- ================= 专题联动================ --><div class="d-flex flex-stack"> <div class="d-flex align-items-center w-100 flex-wrap"> <!-- “全部”按钮 --> <a class="btn btn-sm {if !$params.catids}btn-primary{else}btn-outline-secondary{/if} fw-bold mx-2 my-2" href="{Router::search_url($params, 'catids', NULL)}">全部</a>
    <!-- 循环副栏目的直接子栏目(pid=29) --> {category module=cangpin pid=29 return=c1} {php $isActive = false;} <!-- 生成该栏目的子栏目列表(仅对需要递归的父级) --> {php $child_ids_str = '';} {if in_array($c1.id, [31, 45])} {php $child_ids = [];} {category module=cangpin pid=$c1.id return=child} {php $child_ids[] = $child.id;} {/category} {php $child_ids_str = implode(' | ', $child_ids);} {/if}
    <!-- 高亮判断逻辑 --> <!-- 1. 自身 ID 匹配 --> {if $c1.id == $params.catids} {php $isActive = true;} <!-- 2. 点击父级时,URL 中等于该父级的子栏目列表 --> {elseif $child_ids_str && $params.catids == $child_ids_str} {php $isActive = true;} <!-- 3. 点击子栏目时,检查是否属于该父级 --> {elseif $child_ids_str} {category module=cangpin pid=$c1.id return=sub} {if $sub.id == $params.catids} {php $isActive = true;} {/if} {/category} {/if}
    <!-- 生成链接 --> {if in_array($c1.id, [31, 45])} <a class="btn btn-sm {if $isActive}btn-primary{else}btn-outline-secondary{/if} fw-bold mx-2 my-2" href="{Router::search_url($params, 'catids', $child_ids_str)}">{$c1.name}</a> {else} <a class="btn btn-sm {if $isActive}btn-primary{else}btn-outline-secondary{/if} fw-bold mx-2 my-2" href="{Router::search_url($params, 'catids', $c1.id)}">{$c1.name}</a> {/if}
    <!-- 子栏目展开 --> {if $isActive && $c1.child} <div class="d-flex align-items-center flex-wrap mt-2 p-2 bg-light rounded" style="width:100%;"> {category module=cangpin pid=$c1.id return=c2} <a class="btn btn-sm {if $c2.id == $params.catids}btn-primary{else}btn-outline-secondary{/if} fw-bold mx-2 my-2" href="{Router::search_url($params, 'catids', $c2.id)}" style="color:#888;"> {$c2.name} </a> {/category} </div> {/if} {/category} </div></div><div class="separator separator-dashed my-3"></div>

    <!-- 分类 --> <div class="d-flex flex-stack"> <div class="d-flex align-items-center w-100 flex-wrap"> <a class="btn btn-sm {if !$params.fenlei || dr_linkage('cpclass', $params.fenlei, 0, 'child')}btn-primary{else}btn-outline-secondary{/if} fw-bold mx-2 my-2" href="{dr_search_url($params, 'fenlei', NULL, 'cangpin')}">全部</a> {linkage code=cpclass pid=$params.fenlei} <a class="btn btn-sm {if $t.id==$params.fenlei}btn-primary{else}btn-outline-secondary{/if} fw-bold mx-2 my-2" href="{dr_search_url($params, 'fenlei', $t.id, 'cangpin')}">{$t.name}</a> {/linkage} </div> </div> <div class="separator separator-dashed my-3"></div>
    <!-- 来源 --> <div class="d-flex flex-stack"> <div class="d-flex align-items-center w-100 flex-wrap"> <a class="btn btn-sm {if !$params.source || dr_linkage('cpsource', $params.source, 0, 'child')}btn-primary{else}btn-outline-secondary{/if} fw-bold mx-2 my-2" href="{dr_search_url($params, 'source', NULL, 'cangpin')}">全部</a> {linkage code=cpsource pid=$params.source} <a class="btn btn-sm {if $t.id==$params.source}btn-primary{else}btn-outline-secondary{/if} fw-bold mx-2 my-2" href="{dr_search_url($params, 'source', $t.id, 'cangpin')}">{$t.name}</a> {/linkage} </div> </div> <div class="separator separator-dashed my-3"></div>
    <!-- 库位 --> <div class="d-flex flex-stack"> <div class="d-flex align-items-center w-100 flex-wrap"> <a class="btn btn-sm {if !$params.location || dr_linkage('cplocation', $params.location, 0, 'child')}btn-primary{else}btn-outline-secondary{/if} fw-bold mx-2 my-2" href="{dr_search_url($params, 'location', NULL, 'cangpin')}">全部</a> {linkage code=cplocation pid=$params.location} <a class="btn btn-sm {if $t.id==$params.location}btn-primary{else}btn-outline-secondary{/if} fw-bold mx-2 my-2" href="{dr_search_url($params, 'location', $t.id, 'cangpin')}">{$t.name}</a> {/linkage} </div> </div> <div class="separator separator-dashed my-3"></div>
  • 耗子舞 #10 · 2026-08-28 11:08:58
    哈哈, 我聪明波~~~ 没有任何 php 基础, 只会写 css+div
  • 耗子舞 #11 · 2026-09-14 19:04:29
    @耗子舞:还是自己解决了, 原来副栏目之间连接的符号要特别注意~~

迅睿系统漏洞

GeoSeo收录宝
GeoSeo收录宝(2026-09-24)
1 新增 数据迁徙 功能,重装换站零丢失。 2 把内置css...
模板界面管理
模板界面管理(2026-09-24)
模板段落文字,增加自动嵌套dr_lang函数
Cookie合规拦截
Cookie合规拦截(2026-09-23)
优化后端配置UI
GeoSeo工具箱
GeoSeo工具箱(2026-09-23)
新增头条/360/搜狗/神马数据提交指引
CMS建站系统高级版
CMS建站系统高级版(2026-09-23)
解析自定义URL开关移动到栏目属性设置中 网站设置,将模板路径单独页...
多语言翻译Seolang
多语言翻译Seolang(2026-09-21)
1. 新增译文数据备份恢复页面,支持断点续传 2. 多语言声明中心...
AI文章生成器
AI文章生成器(2026-09-20)
任务拆分独立配置 新增AI生成关键词 新增指令模板 新增品牌信...
GEO系统
GEO系统(2026-09-20)
后台 AEO 与运营端对齐:区域、跑批、CSV、补强、剧本均可在迅睿...