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

05.08.2014

По умолчанию раскрытые сортировки являются частью раскрытой формы и выводится в виде 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
Похожие записи

Комментарии

Гость
27.10.2014, 18:33

Уважаемый 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 по клику на ссылке ставьте значение в раскрытой форме и сабмитьте её

Игорь
23.04.2015, 15:40

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

Игорь
23.04.2015, 16:42

Нашел в чем косяк и как исправить ;-)
В файле 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');
      }
Игорь
23.04.2015, 17:00

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

Михаил
21.09.2015, 10:17

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

Добавить комментарий