Могу ли я использовать один открытый фильтр для фильтрации нескольких видов блоков на разных страницах? - PullRequest
0 голосов
/ 30 марта 2009

У меня есть четыре вида блоков на странице (назовите это страницей «информация»), которые отфильтрованы по близости, чтобы дать мне четыре фрагмента информации, относящиеся к одному конкретному отфильтрованному местоположению.

Я хотел бы иметь возможность создать вступительную страницу с открытым фильтром близости, которая при выполнении приведет меня на страницу (информация) и одновременно отфильтрует четыре представления с указанием близости, введенной на странице введения.

Как я могу это сделать? Я новичок в php, но учусь .... готов работать над этим!

Спасибо

1 Ответ

3 голосов
/ 30 марта 2009

Если вы используете Views в Drupal 6, ответ - да, с некоторыми важными предостережениями.

В отличие от нормальных форм в Drupal, открытые значения фильтра Views поступают в виде параметров $ _GET, отличных от $ _POST. Это означает, что вы можете заполнить открытый фильтр, просто добавив? Filter = value & filter2 = value2 etc ... к текущему URL.

Важно отметить, что если несколько представлений на одной странице ищут одни и те же ключи фильтра в URL, они оба будут использовать значение входящего фильтра. Вам нужно будет настроить список представленных фильтров каждого представления, чтобы убедиться, что все они используют один и тот же список фильтров с одинаковым списком «ключей» для входящих значений. Если вы хотите, чтобы форма фильтра появлялась только один раз, вам, возможно, придется сделать некоторое хитрое жонглирование - представления захотят, чтобы она отображалась в каждом представлении по умолчанию, но в каждом представлении есть возможность перемещать свои открытые фильтры в блок. ; делая это и НЕ активируя открытый блок фильтра, эффективно скрывает открытые виджеты фильтра представления, сохраняя фильтрацию активной, если она входит через URL.

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

...