Переключение вида сетка/список d6

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

Аватар пользователя simon_db simon_db 13 мая 2012 в 16:29

Всем привет.
У меня вопрос. Как можно сделать переключение вида список/сетка?
Есть каталог товаров (drupal 6), выводится через views (taxonomy/term/%), по умолчанию выводится сеткой. Как можно добавить вывод списком, чтобы пользователь сам мог выбрать, как ему будет удобнее.
Желательно без использования uc_catolog и uc_advenced_catalog
Спасибо.

Views Display Tabs частично решает проблему. Но, к сожалению, он не запоминает вид, т. е., если переходишь в другой раздел каталога, вид сбивается на первоначальный.

Комментарии

Аватар пользователя simon_db simon_db 14 мая 2012 в 16:33

Появилась идея.
Создается два дисплея (страницы) для taxonomy/term/%. Одна - с отображением в виде списка, вторая -  в виде сетки.
Создается шаблон page-taxonomy.tpl.php с примерно таким содержимым:

<?php
if($_SESSION['viewmode']=='grind'){
$viewDisplay 'page_grind';
}else{
$viewDisplay 'page_list';
}
print 
views_embed_view('taxonomy_term'$viewDisplay); //подсовываем нужный дисплей
?>

Далее создаем блок с формой:

<?php
<form id="form_1" action="<?php $_SERVER['REDIRECT_URL'];?>" accept-charset="UTF-8" method="GET" />
<
input type="hidden" name="viewmode" value="grind" />
<
input type="submit" value="grind" />
 </
form>
<
form id="form_2" action="<?php $_SERVER['REDIRECT_URL'];?>" accept-charset="UTF-8" method="GET" />
<
input type="hidden" name="viewmode" value="list" />
<
input type="submit" value="list" />
 </
form>

if(isset(

$_GET['viewmode'])){  //проверяем есть ли в какие-то значения в адресной строке
$_SESSION['viewmode'] = $_GET['viewmode']; // переписываем значение с GET в SESSION для хранения на протяжении всей сессии 
}?
?>

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

Аватар пользователя divined divined 14 мая 2012 в 16:35

А еще есть такая функция у views как меню, можно эти 2 дисплея просто добавить в меню типа вкладка и наслаждаться без лишнего кода )

Аватар пользователя simon_db simon_db 14 мая 2012 в 17:03

"divined" wrote:
А еще есть такая функция у views как меню, можно эти 2 дисплея просто добавить в меню типа вкладка и наслаждаться без лишнего кода )

Это не решает проблему так как после перезагрузки страницы вид сбивается.

Аватар пользователя divined divined 14 мая 2012 в 17:14

Как это сбивается? Вы делаете ссылку в меню, следовательно при выборе типа отображения полностью меняется адрес страницы.

Аватар пользователя simon_db simon_db 14 мая 2012 в 17:32

Если в представлениях выбрать menu->Menu tab. то появляются два таба на два представления. При переключении табов к адресу просто добавляется ?vdt=taxonomy_term%7Cpage
При переходе в другой раздел каталога вид сбивается.
Если без шаманств (page-taxonomy.tpl.php) views не даст сделать ссылку в меню на адрес taxonomy/term/% ))))

Аватар пользователя simon_db simon_db 15 мая 2012 в 13:08

Мне не совсем понятно по какому принципу это может работать.
У каждого раздела каталога есть свои адреса (site,ru/taxonomy/term/1, site.ru/taxonomy/term/2 и т. д.).
Вьюшка "taxonomy_term" подхватывает все адреса терминов, так как ее у нее забит путь taxonomy/term/%.
Добавляем дисплей для "taxonomy_term" с таким же адресом "taxonomy/term/%" (при другом адресе подхватывать термины он не будет) но с форматированием сеткой. Получится, что две вкладки (два представления) ссылаются на одинаковый адрес "taxonomy/term/%". Как в таком случае будет что-то переключаться?

Аватар пользователя divined divined 15 мая 2012 в 13:12

ладно давайте на пальцах:
создаете страницу во вьюс с адресом /catalog
настраиваете меню "Вкладка по умолчанию"

добавляете страницу с другим отображением элементов с адресом: /catalog/style
настраиваете меню "вкладка"

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

Есть еще много вариантов как это сделать, но другие более сложные и не очень хорошо дружат с кэшэм друпала )

Аватар пользователя simon_db simon_db 15 мая 2012 в 13:48

Все, понятно.
Дело в том, что мне нужен полноценный каталог (с иерархией).
Т. е. есть тип материала "товар" и есть словарь "каталог". Все ноды(товары) типа материала "товар" привязаны к словарю "каталог" для построения иерархии товаров и навигации по каталогу. Получается что за каждым термином закреплен один или несколько товаров и тизеры товаров доступны по адресу термина (например: taxonomy/term/1). В общем самый стандартный каталог. И для правильной работы данного каталога нужно представление taxonomy_term, т. к. с помощью taxonomy/term/% перехватываются адреса терминов.
В данном случае если адрес будет /catalog или /catalog/style это ничего не даст это просто будут одиночные страницы в которых будут отображаться все товары без навигации по ним (если не считать пейджер). Тут теряется сама концепция каталога. Если товаров будет несколько тысяч...
Конечно можно попробовать с помощью expoused filters + шаманства с javascript построить что-то наподобие навигации но тогда можно забыть про хлебные крошки и красивые адреса url. Но это уже не то...

Аватар пользователя divined divined 15 мая 2012 в 14:44

Понял, тогда думаю переменная в куки и хук на views.
Но это уже из разряда шаманства и как я понял некоторую форму этого вы уже реализовали. Замените только сессии и аргументы на куки и все должно быть прекрасно ).