Drupal - Использование значения CCK в качестве оператора if в представлении кода проверки аргументов - PullRequest
1 голос
/ 27 января 2012

Я хочу отображать представление по-разному в зависимости от значений поля CCK, существующих на текущем просматриваемом узле.Я нашел много решений, относящихся к идентификатору пользователя и ссылочным полям узла, но они, похоже, не работают в этом случае использования.

У меня есть представление, которое содержит 3 отображения вложений, первое возвращает случайное одноотсортированный результат;вторая возвращает слайд-шоу результатов;и в-третьих, список всех результатов.

Чтобы выбрать, какое из этих вложений будет отображаться, содержимое имеет два поля - field_content_ad_slideshow и field_content_ad_showall.Оба из них установлены как да | Да и нет | Нет.Другими словами, это флажок, где выбрано «да», а не выбрано «нет».

Я хочу, чтобы вложение 1 отображалось, если оба значения = нет.вложение 2 для отображения, если field_content_ad_slideshow = yes, и вложение 3 для отображения, если field_content_ad_slideshow = no и field_content_ad_showall = yes (поэтому, если оба значения имеют значение yes, вложение 2 будет отображаться)

По причинам, в которые я не буду входить, я не могуиспользуйте фильтры представлений, чтобы ограничить каждое отображение, и поэтому я пытаюсь сделать это в аргументе.Я попытался установить тип аргумента по умолчанию «ID узла из URL», а код проверки - -

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;

Ни одна из этих работ.Любая помощь высоко ценится!

Спасибо, Роб

1 Ответ

0 голосов
/ 27 января 2012

Вы имеете значение $ display == 'true', поэтому переменная $ display всегда проверяется как false.

Также я думал, что аргументы были возвращены в виде строк, а управление несколькими аргументами осуществлялось с помощью знаков «+» в параметрах представлений. Но это было в друпале 6.

Удачи!

...