You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Drupal 8视图配置两个上下文过滤器后,如何仅使用第二个?

如何仅用第二个上下文过滤器(Shape)筛选内容

嘿,我刚好折腾过类似的Drupal视图需求,给你梳理下具体怎么调整就能实现:

1. 先调整Colour上下文过滤器的规则

进入你的视图编辑页,找到Colour对应的那个上下文过滤器,点它的齿轮图标进配置:

  • 在**“当过滤器值不存在时”这个板块,选“忽略过滤器(不限制结果)”**——意思就是如果URL里没传Colour的参数,这个过滤器就直接失效,不会给内容加Colour的限制。
  • 别忘点保存这个过滤器的设置哦。

2. 再配置Shape上下文过滤器的逻辑

同样找到Shape的上下文过滤器,进配置页面:

  • 还是看**“当过滤器值不存在时”**的选项:
    • 要是你希望没传Shape参数时,视图就显示所有对象(不限制形状),那就选“忽略过滤器”;
    • 要是你想必须传Shape参数才显示内容,就选“显示‘未找到’页面”或者其他你需要的提示行为。
  • 另外可以检查下**“允许空值”和“允许多个值”**的开关,确保符合你的实际需求。

3. 优化URL路径(可选,让访问更友好)

现在你的视图路径是/my-view/%/%,如果觉得/my-view//5这种带空参数的URL太奇怪,你可以调整下:

  • 把Shape上下文过滤器拖到Colour的前面(在过滤器列表里上下拖动就行);
  • 然后把视图路径改成/my-view/%,这样第一个参数就对应Shape了,访问/my-view/5就能直接显示所有形状为circle(ID5)的对象;
  • 要是想兼容原来的/my-view/1/5路径,也可以给视图加一个新的显示方式,专门用/my-view/shape/%这样的路径来处理只传Shape参数的情况。

4. 最后测试验证下

设置完记得测试几种场景:

  • /my-view/1:还是会显示所有颜色为blue(ID1)的对象(因为Shape过滤器没传值就忽略);
  • /my-view/1/5:依然保留原来的逻辑,显示颜色blue且形状circle的对象;
  • /my-view//5:现在会显示所有形状为circle的对象(Colour过滤器被忽略);
  • 要是调整了路径顺序,/my-view/5就直接显示所有Shape=5的内容啦。

内容的提问来源于stack exchange,提问作者Hubert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 06:17:34