Exposing Sort Criteria в Views 2

Главные вкладки

Аватар пользователя snaketoo snaketoo 14 февраля 2011 в 20:07

Может кто знает решение! как во втором вьюсе раскрыть (Exposing) критерии сортировки и количество записей на странице (10, 20, 30,) в третем вьюсе все это есть я знаю но переход на него связан с кучей других нестыковок помню гдето встречал или модуль или патч специально для реализации данного функционала! Заранее спасибо если кто подскажет куда копать !

Комментарии

Аватар пользователя NIKS_ArtReaktor NIKS_ArtReaktor 29 сентября 2011 в 12:20

пропатченые файлы views2 вот здесь уже есть
http://www.drupal.ru/node/37100#comment-393749

может тебе подойдет решение с переписыванием табличного вида...
правда пока не знаю как быть с выводом по 10 20 30 на странице.

Аватар пользователя Orion76 Orion76 29 сентября 2011 в 12:37

там все просто ... в запросе два параметра - идентификатор фильтра (надо предварительно добавить, и посмотреть в Экспорте его название) и направление сортировки DESC ASC, в хуке вьюса собираем панельку сортировки и приаттачиваем ее к вьюсу
как-то так:

<?php
function butik_view_views_pre_build(&$view) {

    if (

strpos('butik_view',$view->name)===FALSE  && $view->current_display == 'page_1') {
    
$sorts $view->display['page_1']->display_options['sorts'];

    

$links = array(
        
'totalcount' => array(
        
'title' => t('Popular'),
        
'sort' => 'ASC',
        
'order' => 'totalcount',
        ),
        
'title' => array(
        
'title' => t('Title sort'),
        
'sort' => 'ASC',
        
'order' => 'title',
        ),
        
'sell_price_dorogo' => array(
        
'title' => t('Dorogo'),
        
'sort' => 'DESC',
        
'order' => 'sell_price_1',
        ),
        
'sell_price_deshevo' => array(
        
'title' => t('Deshevo'),
        
'sort' => 'ASC',
        
'order' => 'sell_price',
        ),
        
'changed' => array(
        
'title' => t('Newed'),
        
'sort' => 'DESC',
        
'order' => 'changed',
        ),
    );

    

$path $_GET['q'];
    
$curr_order=$_GET['order'];
    
$curr_sort=$_GET['sort'];
    
$sort_block '<div class="clr"></div><div id="otbor">';
    
$sort_block .= '<ul><li class="first">'.t('Sort by').'</li>';
    foreach (
$links as $key => $link) {
        
$args = array('query'=>array('order'=> $link['order'] , 'sort'=> $link['sort']));
        
$active '';
        if(
$link['sort'] == $curr_sort && $link['order'] == $curr_order){
        
$active 'active';
        }
        
$class str_replace('_''-'$key);
        
$sort_block.='<li class="' "$class $active'">';
        
$sort_block.= '<a href="'check_url(url($path$args)) .'">'$link['title'] .'</a>';
        
$sort_block.='</li>';
    }
    
$sort_block.='</ul></div>';
    
$view->attachment_before $sort_block;
   }
}
?>

результат: http://www.butik-postel.ru/catalog/komplekty-belya/evro-standart

Аватар пользователя NIKS_ArtReaktor NIKS_ArtReaktor 20 октября 2011 в 13:52

"orion76" wrote:

Классный выход.

Сори, может за тупой вопрос...

уточните пожалуйста

Я так понял что
в template.php прописываем этот хук.

Далее поля в Вашем коде

например
'sell_price_dorogo' => array(
'title' => t('Dorogo'),
'sort' => 'DESC',
'order' => 'sell_price_1',

sell_price_dorogo и sell_price_1- что из них что?

sell_price_1 - это идентификатор фильтра?
sell_price_dorogo - это что?

ну butik_view - это название вьюхи, я так понял.

Аватар пользователя NIKS_ArtReaktor NIKS_ArtReaktor 20 октября 2011 в 14:39

походу
sell_price_dorogo - это определение класса ссылки.

и получается в вьюхе должны быть
поля
или фильтр
или Sort criteria

с id sell_price_1

чето я запутался Smile

orion76 Вы могли бы четко написать пример...
вот есть такая вьюха, в ней есть фильтр с ИД ( или не фильтр) вот сюда это пишем и ура все получилось Smile
при чем вьюха - в виде таблицы или в виде сетки. ( так как в виде таблицы там уже есть похожая организация сортировки)...

заранее спасибо большое, это правда полезная инфа - потому как куча патчей и прочей дребедени для организации exposed sort filter

Аватар пользователя Orion76 Orion76 20 октября 2011 в 17:40

Вы все правильно поняли

на самом деле задача была сделать покрасившее сортировку для табличного вида
вот что получилось:http://www.butik-postel.ru/catalog/komplekty-belya/15-spalnoe

Да..
Добавил нужные критерии сортировки во вьюсе.. данный код просто формирует ссылки с нужными аргументами для выбора сортировки.

сделайте табличный вид с сортировкой, и посмотрите структуру ссылок сортировки в заголовках... и все станет понятнее...

Да... вроде такой нюансик был.. если поля нет в выводе(например статистика просмотров) то фильтр по нему (Популярность) не работает.. Добавляем поле, скрываем и все.