【发布时间】:2012-02-20 12:28:59
【问题描述】:
我想根据当前正在查看的节点上存在的 CCK 字段值以不同的方式显示视图。我找到了许多与用户 ID 和节点引用字段相关的解决方案,但它们似乎不适用于这个用例..
我有一个包含 3 个附件显示的视图,第一个返回一个随机排序的结果;第二个返回结果的幻灯片;第三,所有结果的列表。
要选择显示哪些附件,内容有两个字段 - field_content_ad_slideshow 和 field_content_ad_showall。这两个都设置为yes|Yes 和no|No。换句话说,它是一个复选框,选中的是“是”,未选中的是“否”。
如果两个值 = 否,我希望显示附件 1。 如果 field_content_ad_slideshow = yes 则显示附件 2 如果 field_content_ad_slideshow = no 且 field_content_ad_showall = yes 则显示附件 3 (因此如果两个值都是yes,将显示附件2)
由于我不会进入的原因,我不能使用视图过滤器来限制每个显示,因此我试图在参数中这样做。我尝试将默认参数类型设置为“来自 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;}
这不起作用。
我还尝试将验证器代码更改为基本验证,并将默认参数类型更改为
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;
这些都不起作用。非常感谢任何帮助!
谢谢 抢
【问题讨论】:
标签: php drupal views arguments