Объединить два вида в один вид - PullRequest
1 голос
/ 05 апреля 2010

У меня есть два представления, которые я хотел бы объединить в одно.

В первом представлении отображаются все элементы X, где идентификатор компании = Y. Это делается для того, чтобы сначала предоставить клиенту преимущественную сортировку, а затем всем остальным.

Итак, я создал второй вид, все элементы X, где идентификатор компании! = Y.

Я создал его как приложение для прикрепления к первому виду, но не думаю, что получил ожидаемый результат.

Как я могу объединить эти представления, чтобы сначала отображались результаты первого представления, а затем и второе представление, используя тот же пейджер, фильтры и аргументы?

Есть ли способ достичь этого без программирования?

Ответы [ 7 ]

2 голосов
/ 05 апреля 2010

С точки зрения MySQL, синтаксис упорядочения по полю был бы подходящим способом справиться с этим. Пример:

SELECT * FROM tickets ORDER BY FIELD(priority, 'High', 'Normal', 'Low');

Было бы замечательно, если бы существовал модуль, который добавляет такую ​​функциональность в Views, но AFAIK он не существует.

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

1 голос
/ 06 апреля 2010

В соответствии с идеей «залипания», если вы не хотите переопределять это, возможно, вы можете добавить поле флажка для типа компании - isClient. Сделайте его ложным для всех, кроме клиента, и сортируйте по нему.

Я этого не делал, но, возможно, вам нужно создать обе версии в виде вложений и прикрепить их обе к другому дисплею ...?

0 голосов
/ 18 апреля 2016

Чуть позже ... но я нашел лучшее решение , используя только модуль Views :

  1. Создайте Block View , в котором отображается первый необходимый вам список ("all items of X where company ID = Y")
  2. Создание другого представления, которое должно быть « Просмотр страницы » со вторым списком (all items of X, where company ID != Y)
  3. В настройках "HEADER" этого второго вида нажмите "Add" и выберите "Global: View area".
  4. В списке «View to insert» выберите первое созданное вами (и отметьте «Inherid contextual filters», если вы его используете)

И это все!

0 голосов
/ 18 апреля 2011

обычно самый простой способ добиться этого - с помощью небольшого hook_query_alter, но это требует небольшого объема программирования.

0 голосов
/ 06 апреля 2010

как клиентский параметр передается в представление? в качестве аргумента URL? Если это так, вы можете создать свой второй вид, как я обрисовал здесь , а затем выберите исключить аргумент в соответствующем месте.

0 голосов
/ 06 апреля 2010

Создайте второй вид в качестве вложения и прикрепите его к первому.
Установите все Inherit arguments, Inherit exposed filters и Inherit pager на Yes.

0 голосов
/ 05 апреля 2010

для друпала 5 был союз со взглядами. Кто-то начал что-то для D6, но я не знаю, как далеко они продвинулись.

http://drupal.org/node/275162

...