Итеративная модификация Drupal View - PullRequest
0 голосов
/ 24 марта 2011

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

Это Views 2, локация, Drupal 6.

Похоже, hook_views_pre_render (& $ view) - это место, где можно поместить мой код, чтобы проверить, что было возвращено представлением, и соответствующим образом изменить представление, но я не знаю, следует ли или как мне снова вызвать представление. сверху с измененным $ view.

ОБНОВЛЕНИЕ: похоже на hook_views_pre_render: если используется пейджер, вы получаете только те узлы, которые отображаются на текущей странице. Мне нужно, чтобы увидеть весь набор и изменить его порядок. Или, по крайней мере, если нет узла типа A, можно просмотреть список вниз и продвинуть один из A на текущую страницу.

Ответы [ 2 ]

0 голосов
/ 25 марта 2011

Для такого особого запроса я бы, вероятно, просто сделал небольшой модуль со страницей, которая бы брала все из полей ввода в качестве аргументов вместо фильтров.Я бы взял запрос из интерфейса представлений (так что мне не приходилось разбираться в этом сам) и изменил бы его на запрос типа SELECT COUNT (*), а затем написал бы простой код в цикле - проверяя результати если он достаточно большой, выход из цикла, а затем использование этих параметров для построения представления.Это должно сэкономить вам много времени по сравнению с попыткой выяснить, как это сделать со всеми различными опциями в виджетах построителя представлений.

0 голосов
/ 25 марта 2011

То, что вы хотите сделать, это упорядочить результаты по расстоянию по возрастанию, а затем ограничить вывод ## результатами. (SQL должен показывать ORDER BY distance ASC LIMIT ##)

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

...