Измените выбор по умолчанию для фильтра просмотра 2


На мой взгляд, у меня есть открытый фильтр, который позволяет пользователям выбирать между двумя различными типами контента. Значение по умолчанию для открытого фильтра, по-видимому, выбирается тем типом контента, который стоит первым в алфавитном порядке. Итак, если я позволю пользователям выбирать между типами контента "Группа" и "Песня", по умолчанию будет "Группа". Я хочу изменить это значение по умолчанию на другой тип контента ("Песня" в приведенном здесь примере). Я не могу найти для этого опцию в интерфейсе представлений. Должен ли я это делать сделать это через hook_form_alter? Если да, то как именно я это сделаю?

 7
Author: Chaulky, 2011-04-04

5 answers

Итак, я попробовал поступить так, как предложил @David Lanier, но не смог до конца осознать это. Поэтому я вернулся к основам Drupal и попробовал использовать подход hook_form_alter(). После некоторого устранения неполадок я также нашел сообщение об изменении значений фильтра представлений по умолчанию. Я применил тот же подход и заставил его работать. Ниже приведен используемый код a с несколькими изменениями, чтобы удалить материалы, относящиеся к моему сайту. Как всегда, обязательно замените "имя модуля" именем вашего модуль.

function modulename_form_alter(&$form, $form_state, $form_id) {
 // is this the right form?
 if($form['#id'] == 'name-of-the-views-form-displayed') {
   if (empty($_GET['label-of-the-filter']))  {
    $form_state['input']['label-of-the-filter'] = 'default-value-for-filter';
   }
  }
}

Просто замените name-of-the-views-form-displayed, как вы уже догадались, именем формы представлений, которую вы хотите изменить. Самый простой способ найти это - проверить источник представления в браузере (я люблю Firebug за это) и найти элемент form, а затем захватить его атрибут id. Чтобы найти название фильтра и значение, которое вы должны установить, измените фильтры и выполните "поиск". Загляните в адресную строку, и вы увидите значения, которые вам нужно использовать здесь в качестве параметров в URL-адресе.

Надежда это также помогает другим обойти эту проблему!

 5
Author: Chaulky, 2011-04-11 02:06:55

Я сделал так

function hook_form_views_exposed_form_alter(&$form, &$form_state) {

  global $user;
  $account = user_load($user->uid);
  $term = taxonomy_term_load($account->field_user_industry[LANGUAGE_NONE]['0']['tid']);

  unset($form['field_event_industry_tid']['#size']);
  if ($form['#id'] == 'views-exposed-form-events-events-pane') {
    // get the view argument if defined
    $term_filter=$_GET;
    unset($term_filter['q']);
    $term_arg = $term_filter;
    if (!empty($term_arg)) {
      $terms = $term_arg;
    }

    // change our input as required
    if (isset($terms)) {
      $form_state['input']['field_event_industry_tid'] = $terms['field_event_industry_tid'];
    }
    else{
      $form_state['input']['field_event_industry_tid'] = $term->tid;
    }
  }
}

В моем случае мне пришлось изменить значение по умолчанию в соответствии с запросом, но если это не так, я использую нужное значение, этот способ отлично работает!

 2
Author: David, 2014-05-28 06:53:22

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

Если вам нужно, чтобы в форме были доступны только некоторые из ваших типов контента, и только некоторые из предварительно выбранных, вам нужно будет сделать что-то вроде этого: Добавьте два фильтра типов контента:

  • Фильтр 1 = только типы контента это должно быть доступно. Не подвергайте этот фильтр воздействию.
  • Фильтр 2 = открытый фильтр. Выберите здесь те, которые должны быть предварительно выбраны по умолчанию.
 1
Author: David Lanier, 2011-04-04 23:48:46

Возможно, вы уже получили ответ, но вот как я решил. Если вы отредактируете фильтр в представлении, появится опция " Ограничить список выбранными элементами ". Я проверил эту опцию, и значение по умолчанию было сброшено, так что теперь значение фильтра по умолчанию - Все (с тегом Any).

 1
Author: Oriol, 2012-04-18 10:06:57

Смотрите нижнюю часть поста по адресу:

Http://realguess.net/node/28

Если вы не выберете какой-либо из вариантов в поле Пол клиента и установите флажок Необязательно, этот открытый фильтр является необязательным и будет иметь дополнительные параметры, позволяющие его не устанавливать. флажок, то будет выбран по умолчанию. Если вы выберете Мужской элемент, то ваш выбор по умолчанию будет мужским при отображении представления.

 0
Author: Sid Kshatriya, 2012-05-10 09:27:27