Drupal - 在视图参数验证代码中使用CCK值作为if语句

时间:2012-01-27 14:19:08

标签: php drupal views arguments

我希望根据正在查看的当前节点上存在的CCK字段值以不同方式显示视图。我找到了许多与用户ID和节点引用字段相关的解决方案,但它们在这个用例中似乎不起作用。

我有一个包含3个附件显示的视图,第一个返回一个随机排序的结果;第二个返回结果幻灯片;第三,所有结果的清单。

要选择要显示的附件显示中的哪一个,内容有两个字段 - field_content_ad_slideshow和field_content_ad_showall。这两个都设置为是|是和否|否。换句话说,它是一个复选框,其中selected为'yes',未选中为'no'。

如果两个值=否,我希望显示附件1。 如果field_content_ad_slideshow = yes,则显示附件2 和附件3显示如果field_content_ad_slideshow = no和field_content_ad_showall = yes (因此,如果两个值都为是,则显示附件2)

由于我不会进入的原因,我不能使用视图过滤器来限制每个显示,所以我试图在参数中这样做。我尝试将Default参数类型设置为'来自URL的节点ID',将验证代码设置为 -

if (arg(0) == 'node' && is_numeric(arg(1))) {$node = node_load(arg(1));}
if ($node->field_content_ad_slideshow[0]['value'] == 'no' && $node->field_content_ad_showall[0]['value'] == 'no') {return  TRUE;}
else {return  FALSE;}

这不起作用。

我还尝试将验证器代码更改为基本验证,将Default参数类型更改为

if (arg(0) == 'node' && is_numeric(arg(1))) {
$node=node_load(arg(1));
$slideshow = $node->field_content_ad_slideshow[0]['value'];
$showall = $node->field_content_ad_showall[0]['value'];
$display = null;

if($slideshow=='no' && $showall=='no') {
$display == 'true';
}

if($display) {
$args[0] = (arg(1));
} else {
$args[0] == '';
}
return $args;

这些都不奏效。任何帮助非常感谢!!

由于 罗布

1 个答案:

答案 0 :(得分:0)

你有$ display =='true'所以$ display var总是验证为false。

此外,我认为args作为字符串返回,并且使用视图选项中的“+”符号管理多个args。但这是在drupal 6中。

祝你好运!