2009-12-09 2 views
1

Я немного борюсь с представлением, которое получает данные от узла, который использует два опорных поля узла, которые указывают на один и тот же тип содержимого. С моего пути я получаю одну строку в качестве аргумента, назовем ее $fruit.Условные отношения в Drupal Views

Запрос, который я бы сделал, если бы я сам писал запрос, был бы чем-то вроде SELECT * FROM recipe WHERE (fruit_1=$fruit OR fruit_2=$fruit). Моя проблема в том, что я не понимаю, как это сделать в представлении Drupal. Какие-либо предложения?

UPDATE: Я, наконец, решил, что я пытался сделать. Решение для меня состояло в том, чтобы использовать Panels вместе с View с использованием аргументов Views Or и установить оба значения аргументов в соответствие с первым аргументом Panels. Не уверен, что я объясняю либо свою проблему, либо мое решение правильно, но если кому-то понадобится более подробное объяснение, не стесняйтесь спрашивать.

ответ

2

Просмотров Или модуль аддон: http://drupal.org/project/views_or

Это действительно должны быть включены в соображениях по умолчанию, потому что это настолько мощный.

«начинают альтернатив» вариант по существу помещает «(» в запросе. Опция «следующая альтернатива» по существу помещает «ИЛИ» в запросе. Опция «конечных альтернатив» по ​​существу помещает «)» в вашем запросе.

Фильтры изображений устанавливаются как «И» между каждым полем, это добавляет возможность «ИЛИ». Таким образом, используя ваш пример ваши фильтры будет что-то вроде:

Content Type = Recipe 
Begin Alternatives 
Node Title = fruit_1 
Next Alternative 
Node Title = fruit_2 
End Alternatives 

Обратите внимание, что вы можете иметь несколько вариантов или с использованием более «следующего альтернативных» фильтров, каждый из которых помещает «ИЛИ» между другими фильтрами. Если это все еще запутывает, проверьте предварительный просмотр запроса в панели просмотров после каждого изменения.

+0

Nice find! (+1) – mac

+0

Я пытаюсь Открыть или на какое-то время, но я просто не понимаю, как это сделать. До тех пор, пока у меня есть один аргумент с идентификатором проверки идентификатора узла, он работает так, как ожидалось, но когда я добавляю «Следующая альтернатива» и проверяю свое второе поле на одно и то же значение (с аргументом «Share»), я получаю пустой 'WHERE' и ошибка sql. Не уверен, что я делаю неправильно – Marco

1

Я не думаю, что есть способ сделать ... ИЛИ ... часть вашего запроса в интерфейсе Views. Однако вы можете создать свой собственный модуль и использовать интерфейс представления для создания первой части запроса, а затем использовать hook_views_query_alter в своем модуле, чтобы просто добавить WHERE (fruit_1=$fruit OR fruit_2=$fruit) в конец запроса.

Дополнительная информация о hook_views_query_alterhere и here. Удачи.