Webflow中如何在自定义属性过滤时排除指定CMS项
Webflow频道筛选:解决Discover套餐误匹配及排除特定项问题
Webflow自带的自定义属性过滤器是模糊匹配,只要内容里包含筛选关键词就会被命中,这就是为啥"Discover"按钮会带出"Discovery Velocity"频道——它的标题里有"Discover"字符串。另外Webflow原生不认exclude-cms-items这种自定义属性,所以你加了也没用。
给你三个实用的解决办法:
方法一:用精准匹配字段替代模糊筛选
- 给「TV Channels」CMS集合新增一个单行文本字段,比如命名为「精准套餐标识」。
- 给属于Discover套餐的频道,这个字段统一填
discover;给"Discovery Velocity"这类不属于该套餐的频道,填对应的其他标识(比如discovery-velocity)。 - 把筛选按钮的自定义属性改成
filter-by=精准套餐标识,值设为discover。这样筛选就只会匹配字段值完全等于discover的频道,不会误捞。
方法二:用自定义JS手动排除指定频道
如果不想改CMS字段,直接加一段JS实现排除逻辑:
- 保留原来的
filter-by="Discover"按钮,然后在页面的「自定义代码」区域(页脚部分)添加以下脚本:
// 监听Discover筛选按钮点击 document.querySelector('[filter-by="Discover"]').addEventListener('click', function() { // 延迟100ms等待Webflow完成筛选渲染 setTimeout(() => { // 找到所有频道项,隐藏指定名称的频道 document.querySelectorAll('.tv-channel-item').forEach(item => { if (item.textContent.includes('Discovery Velocity')) { item.style.display = 'none'; } }); }, 100); });
- 注意:把
.tv-channel-item换成你页面中频道项实际使用的类名。
方法三:用Webflow内置集合筛选器(静态切换场景)
如果你的筛选是基于集合列表的静态切换,可以直接用Webflow内置的集合筛选器:
- 选中集合列表,在右侧面板的「筛选」选项里,添加筛选条件:「套餐名称」等于「Discover」(一定要选「等于」,别选「包含」)。
- 如果需要多个按钮切换不同套餐,可以给每个按钮绑定交互,切换对应集合列表的筛选条件,这种方式完全不需要自定义属性,精准度更高。
内容的提问来源于stack exchange,提问作者Emma Sewell
相关产品推荐
相关产品推荐

