Как указать ссылку меню на представление с несколькими параметрами для одного и того же выбранного открытого фильтра?
У меня есть страница просмотра, которая служит как каталог, используя множество открытых фильтров.
Мне нужна ссылка в меню, указывающая на определенную комбинацию фильтров. Допустим, URL-адрес для этого отфильтрованного представления >
Просмотр?опция[]=7&опция[]=12&опция[]=14
Звучит просто, но я нахожу это трудным по ряду причин:
- Меню считает этот путь недопустимым
- Я не могу превратить его в псевдоним пути, потому что это также считает это недопустимым путем
- Я могу настроить его как перенаправление, но меню все равно не распознает перенаправление как допустимый путь
- Я могу настроить его как страницу менеджера страниц, используя менеджер страниц CTools, и настроить его как перенаправление, но каждый параметр, кроме последнего, обрезается, и он перенаправляется на это. Похоже, ему не нравятся амперсанды:
Просмотр?опция[]=14
- Если я введу его с закодированным URL-адресом амперсандов, он получит сбит с толку, потому что двойной URL кодирует символы, закодированные в URL, нарушая их.
1 answers
Получилось. Я настроил его как страницу менеджера страниц с произвольным путем (например, options
или view/options
), установил значение "Код ответа HTTP", затем "перенаправление 301".
Проблема в вопросе, где символы, разделенные амперсандом, были съедены, по-видимому, была вызвана тем, что Drupal рассматривал их как дубликаты друг друга и отвергал все, кроме последнего. Чтобы обойти это, я установил URL-адрес перенаправления следующим образом:
Просмотр?опция [1]=7 и опция[2]=12 и опция[3]=14
Примечание как у каждого из них есть уникальный номер в квадратных скобках.
Представления, похоже, не заботятся о числах в квадратных скобках, и они останавливают объединение параметров Drupal в один.
Обратите внимание, что вы всегда должны вводить некодированную версию, как указано выше, иначе Drupal будет дважды кодировать ее, что приведет к ее разрыву. Имейте это в виду, если вы редактируете его - вам нужно будет заменить всю строку оригинальной, некодированной версией, а затем отредактировать ее перед сохранением.