
帝国CMS本身没有内置多级联动筛选功能,但通过自定义字段、信息联动类别和灵动标签的配合使用,完全可以实现高效的多级联动筛选。以下是具体实现方法,适用于产品、房源、招聘等需要多条件筛选的网站场景。
1. 开启并设置联动信息分类
进入后台“系统” → “管理数据表” → 选择对应数据表(如新闻系统表)→ “管理字段” → 找到或新增“联动类别”字段。
添加字段时选择“信息联动类型”,然后进入“系统” → “信息联动”创建联动层级结构。例如做房产站:
一级:区域(如朝阳区、海淀区)二级:商圈(隶属于区域,如中关村、望京)三级:地铁线(可选,如10号线、13号线)
保存后,在发布内容时即可选择对应的联动分类,数据会自动关联。
2. 前台调用联动筛选菜单
在列表模板或封面模板中,使用灵动标签([e:loop])或万能标签调用联动分类数据,生成筛选项。
示例:调用一级分类(区域)
[ecmsinfo]”select * from phome_enewslinktype where myid=0 and classid=1″,10,0,0,24,31,0[/ecmsinfo]
实际常用做法是直接用PHP代码查询:
php$father_sql = $empire->query(“select * from phome_enewslinktype where myid=0 and classid=1”);while($father_r = $empire->fetch($father_sql)) { echo “{$father_r[lname]}”;}?>
根据GET参数动态加载二级联动(如商圈):
query(“select * from phome_enewslinktype where myid=’$area_id'”); while($son_r = $empire->fetch($son_sql)) { echo “{$son_r[lname]}”; }}?>
3. 结合自定义字段实现复合筛选
除了联动类别,还可以添加“户型”、“价格区间”、“面积段”等自定义字段,用于更细粒度筛选。
例如在数据表中增加“price”字段(价格),前台通过GET传参构造SQL查询条件:
$where = “where classid=36″; // 指定栏目$price = (int)$_GET[‘price’];if($price == 1) $where .= ” and price between 0 and 100″;if($price == 2) $where .= ” and price between 100 and 300″;$area = (int)$_GET[‘area’];if($area) { $where .= ” and linktypeid in (“.implode(‘,’, get_linktype_ids($area)).”)”;}$articles = $empire->query(“select * from phome_ecms_news $where limit 20”);
注意:get_linktype_ids() 需自行编写函数获取该区域下所有子类ID。
4. URL优化与SEO友好处理
原始GET参数URL不利于收录,可通过伪静态将筛选链接转为静态路径,如:
/fang/chaoyang/zizhuanqu/ → 实际解析为 ?area=1&business=5
在.htaccess或nginx配置重写规则,并在PHP中解析路径参数,提升用户体验和搜索引擎抓取效果。
基本上就这些。关键在于联动分类设置 + 灵活的SQL查询 + 前端交互逻辑。虽然帝国CMS操作略繁琐,但一旦搭建完成,筛选功能稳定且扩展性强。不复杂但容易忽略细节,比如缓存更新、SQL注入防护等需额外注意。

评论(0)