Могу ли я использовать один открытый фильтр для фильтрации нескольких блочных представлений на другой странице?

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

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

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

Спасибо


person Community    schedule 30.03.2009    source источник


Ответы (1)


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

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

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

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

person Eaton    schedule 30.03.2009
comment
Eaton, Спасибо за быстрый ответ. Кажется, я понимаю, но не уверен, как реализовать. Прежде чем идти дальше... можно ли это сделать с помощью представлений в Drupal 5.x? На данный момент я как бы зациклен на 5.x из-за отсутствия некоторых модулей в 6.x. Джефф (jdm843) - person ; 31.03.2009
comment
Открытые фильтры по-прежнему работают в D5, но вы должны быть намного осторожнее: они используют такие ключи, как «filter1» и «filter2», что означает, что вам нужно синхронизировать все фильтры для разных представлений, чтобы URL-адрес ключи совпадают. если вы это сделаете, это все равно должно работать! - person Eaton; 31.03.2009