【问题标题】:Drupal - Using a CCK value as an if statement in views argument validation codeDrupal - 在视图参数验证代码中使用 CCK 值作为 if 语句
【发布时间】: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


    【解决方案1】:

    您将其设置为 $display == 'true' 所以 $display var 始终验证为 false。

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

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-30
      相关资源
      最近更新 更多