如何在上下文过滤器下使用Global:Null设置视图以返回404?


14

标准的Drupal行为是传递所有参数,无论它们是否被请求。有时需要这种行为。但是,除了查询字符串外,我需要返回404。

问题示例 http://drupal.org/project/modules http://drupal.org/project/modules/google.com <-这应该返回404;给出200。内容惩罚重复!

意见404模块假设默认你不想争论穿过。但是,该模块没有D7版本。

但是项目页面说,通过在Arguments下设置Global:Null也可以实现视图404。

显然,在D7中,“参数”现在是“上下文过滤器”,但是我不确定要向Global:null上下文过滤器添加哪些设置才能获得所需的结果。

任何帮助,将不胜感激。

Answers:


22

上下文过滤器中,选择添加;在出现的对话框中,选择Global:Null

屏幕截图

单击添加并配置上下文过滤器

在接下来出现的对话框中,在字段集中当过滤器值可用或提供默认值时,选中“ 指定验证条件”,为“ 验证器选择-“基本验证,然后选择“ 显示未找到页面”作为采取以下措施时要采取的行动过滤器值无效。在“ 更多 ”字段集中,如果指定了任何参数,则选中“ 失败基本验证”

屏幕截图

我使用创建的“ Articles”视图对其进行了测试,并且可以正常工作。

屏幕截图

屏幕截图

“ Global:Null”参数必须是最后一个。例如,如果需要用户ID,则首先将其添加为参数,然后添加“ Global:Null”参数。

我更改了“文章”视图,以接受用户ID作为自变量,该ID用于过滤文章节点列表。该视图仍然有效,因为它不接受额外的参数。

屏幕截图

屏幕截图


1
这将返回403而不是404代码错误。改为选择“显示“找不到页面””选项
Eugene Fidelin 2012年

在关于DO的线程中,我看到有人建议使用arg(1)== NULL; 在PHP验证代码。这是更好还是差不多?
奈杰尔·沃特斯

1
@EugeneFidelin我正在编辑“主”显示,但没有看到“ 显示未找到页面”选项。我纠正了我的答案。
kiamlaluno

@NigelWaters忘记我的先前答案。:)我正在编辑错误的显示,并且视图无法正常工作。无需使用PHP代码来验证参数。查看更新后的答案。
kiamlaluno

我没有足够的要评论的地方-所以在这里发帖感谢@kiamlaluno。效果很好,有一段时间我碰到头了。
Blue Waters

1

您可以使用现成的视图功能来执行此操作。在每个上下文过滤器设置中,您都可以看到一个复选框“指定验证条件”,以检查更多设置。

然后,您可以根据自己的查看条件选择“验证器”。如果您想自定义验证,请选择php代码。根据您的验证条件,在php代码中返回True或False。

最后,选择“采取措施”,因为“拒绝显示访问”!有关nid上下文过滤器,请参见下面的屏幕截图。

在此处输入图片说明


我添加的php代码是什么?
奈杰尔·沃特斯

我仅使用Global:null上下文过滤器
Nigel Waters 2012年

3
切勿在视图或任何其他UI工具中使用PHP代码!
hugronaphor 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.