xandeadx.ru Блог музицирующего веб-девелопера

Drupal → Views exposed sort в виде ссылок

Опубликовано в

По умолчанию раскрытые сортировки являются частью раскрытой формы и выводится в виде select-ов:

Чтобы сделать сортировку в виде ссылок нужно:

1. Установить модуль Better Exposed Filters.

2. В настройках Views сменить стиль раскрытой формы на Better Exposed Filters.

3. В настройках раскрытой формы выбрать опцию Display exposed sort options as равной Toggle links и отметить опцию Combine sort order with sort by:

Там же при желании можно переопределить текст ссылок и скрыть кнопку отправки формы.

Результат:

Таким же образом можно вывести в виде ссылок настройки пейджера:

У кого в настройках раскрытой формы не появляются настройки пейджера.

Написанное актуально для Views 3
Похожие записи

Комментарии RSS

Уважаемый xandeadx!

А без модуля BEF имеется решение?

Нашел вот такой код:

function sync_company_prices_views_query_alter(&$view, &$query) {
    if($view->name == 'Services') {
        if (arg(1) == 'pfa') $query->orderby[0]='field_price_from_value ASC';
        if (arg(1) == 'pfd') $query->orderby[0]='field_price_from_value DESC';
        if (arg(1) == 'pta') $query->orderby[0]='field_price_to_value ASC';
        if (arg(1) == 'ptd') $query->orderby[0]='field_price_to_value DESC';
    }
}

После этого мы можем вывести ссылки.

<a href="/services/pfa">by price from ASC</a> |
<a href="/services/pfd">by price from DESC</a> |
<a href="/services/pta">by price to ASC</a> |
<a href="/services/ptd">by price to DESC</a>

Есть еще варианты?

с помощью js по клику на ссылке ставьте значение в раскрытой форме и сабмитьте её

Toggle links - классная штука - только вот не могу понять как настроить подсветку активной ссылки?

Нашел в чем косяк и как исправить ;-)
В файле sites/all/modules/better_exposed_filters/better_exposed_filters.theme есть функция - theme_select_as_links($vars)
Копируем к себе в тему заменяя на название соей темы
там есть код

      // Add "active" class to the currently active filter link.
      if (in_array((string) $key, $selected_options)) {
        $link_options['attributes'] = array('class' => 'active');
      }

Он то и не срабатывает, потому что ссылки на эту страницу нет, а есть уже с другим параметром 'ASC' <-> 'DESC'
сделал так
      if(mb_stristr($key, 'DESC')) $key_str = str_replace('DESC', 'ASC', $key);
      else $key_str = str_replace('ASC', 'DESC', $key);
 
      if (in_array((string) $key_str, $selected_options)) {
        $link_options['attributes'] = array('class' => 'active');
      }

Поправь в верху - mb_stristr на strstr - спасибо.

Здравствуйте, xandeadx!
Когда отмечаю опцию Combine sort order with sort by, выходит еще одно поле с надписью:
"Enter a query parameter to use for combined sorts". Внутри этого поля по умолчанию: sort_bef_combine. Я ничего не меняю, сохраняю, как есть. При открытии страницы с блоком, где находится сортировка, вылезают ошибки, в которых и упоминается эта строка "sort_bef_combine". Подскажите, что делать?

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании