Удалить или Параметры фильтра на Exposed Filter в Drupal 7 - PullRequest
1 голос
/ 13 октября 2011

Я работаю на веб-сайте, который использует доступ к домену, и для просмотра я выставляю фильтр, который перечисляет все домены. Я хочу перечислить только некоторые домены, но не все. Я знаю, что это возможно сделать с конфигурацией фильтра, но если я ограничу параметры таким образом, то возникнет проблема с ajax, который изменяет весь текст параметров на «1», и в любом случае я хочу знать, как это сделать , либо с изменением формы хука, либо с темами, но предпочтительно с использованием некоторого хука из модуля.

В общем, я пытаюсь выяснить, как удалить некоторые параметры для открытого фильтра, мне удалось сделать это с помощью JQuery, но я бы хотел сделать это с помощью php, спасибо!

1 Ответ

0 голосов
/ 13 октября 2011

Это должно быть довольно просто, используя hook_form_FORM_ID_alter, как вы предлагаете.Сначала проверьте элемент <form> формы фильтра (используя Firebug или аналогичный) и получите его атрибут ID.Идентификатор формы в Drupal будет этой строкой, но со всеми символами «-», замененными на «_» (поэтому «form -posed-filter-form» станет «form_exposed_filter_form»).

Следует помнить, что обработчик отправки для формы, вероятно, будет ожидать, что элементы, которые вы пытаетесь удалить, будут там, поэтому вы, вероятно, получите неожиданные результаты, если просто вытяните их оттуда.,

Обходной вариант - вместо этого изменить тип элементов на value (чтобы они были доступны для функции отправки в $form_state['values']) и выбрать для каждого значение по умолчанию.Как то так:

// Replace 'FILTER_FORM_ID' with the form's ID
function mymodule_form_FILTER_FORM_ID_alter(&$form, &$form_state, $form_id) {
  $form['some_existing_element'] = array(
    '#type' => 'value',
    '#value' => $default_value_for_filter
  );
}
...