Переключение таблица/сетка во вьюхе.

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

Аватар пользователя Koreychenko Koreychenko 14 августа 2013 в 16:12

Канонический вопрос, ответа на который я пока не нашел: как сделать переключение вида вьюхи между таблицей и сеткой?

Усложняем:

Во вьюхе есть куча exposed фильтров. При переключении вида сортировка сбрасываться не должна. Открытая страница пейджера тоже не должна сбрасываться.

Еще усложняем:

Все это должно работать без перезагрузки страницы через AJAX. (сейчас фильтры работают так)

Что приходит в голову.

Пользователь кликает на кнопочку "сменить вид", мы пишем в переменную $_SESSION['view_mode'] какое-нить значение и перезагружаем вьюху.
В своем модуле реализуем hook_views_pre_render(&$view), в котором меняем style_options с одного вида на другой.

Но, почему-то оно не работает. Внешний вид вьюхи не меняется. Есть ли у вьюхи какие-то инструменты для установки стилей по типу $views->set_display, но $views->set_style?

Комментарии

Аватар пользователя multpix multpix 14 августа 2013 в 17:10

"mikewing" wrote:
Посмотри на стартовой http://www.top-sovet.ru, если это имеется ввиду - расскажу )).

Рассказывай - интересно как решал.
p.s.
переход по пагинатору однако убирает добавленное js-om по клику...

Аватар пользователя drupby drupby 14 августа 2013 в 17:12

"mikewing" wrote:
Посмотри на стартовой http://www.top-sovet.ru, если это имеется ввиду - расскажу )).

там выбор не запоминается при возвращении
надо же еще и в $.cookie делать пометку
вот здесь посмотри http://www.animacity.ru/events ,выбери вид и обнови страницу -он сохранится
а как сделано в js можно почитать

Аватар пользователя Koreychenko Koreychenko 14 августа 2013 в 17:21

Это-то все делается элементарно. Хотелось просто сделать через api. Потому что изменение стиля отображения добавляет еще кучу ништяков, например, стандартную друпаловскую сортировку для таблиц и т.п. А у вас не совсем таблица получается все-таки.

Кстати, ваша проблема со сбросом вида решается банальным переносом специфического класса из непосредственно вьюхи (которая обновляется) на уровень выше. Да хоть в его переносить.

Аватар пользователя mikewing mikewing 25 августа 2013 в 22:32

http://rutracker.org/forum/viewtopic.php?t=3981490
По этой ссылке нужно скачать govideo.
Это установочный профиль под Д7, там этот механизм реализован.
Но смысл такой
Скриптом switch.js добавляем/убираем классы
Переопределяем вьюху
views-view-unformatted--home-featured-videos--block-1.tpl.php
views-view--home-featured-videos--block-1.tpl.php
и добавляем ссылку для JS для смены вида.
Далее CSS-ом прячем показываем.

П.С. Там есть пара ошибок в JS - его пришлось немного подправить.
П.С.2. Сори, что даю ссылку на шаблон, но легче в нем посмотреть, чем приводить сюда листинги php и js.

Для пущей наглядности, вот механизм.
http://jsfiddle.net/lesson8/TX3G2/

Аватар пользователя mikewing mikewing 14 августа 2013 в 21:09

Я конечно понимаю, что это немного не то, что хотел ТС. Но извините, тут, компетентности не хватает. Просто, раз уж всем стало интересно, как реализовать грид/лист - отписал. А вообще, интересно переключение между вьюсами. Если сделаете - будте добры опубликовать.
Заранее спасибо.

Аватар пользователя mikewing mikewing 14 августа 2013 в 21:34

"drupby" wrote:
там выбор не запоминается при возвращении
надо же еще и в $.cookie делать пометку

кстати, да, там у меня еще один файлик .js, который изначально сворачивает все при загрузке страницы. Но мысль хорошая. Спасибо за замечание. Нужно дописать.
П.С. ТС, а что ты перестал статьи на сайте писать, в прошлом году было достаточно интересно читать.

Аватар пользователя Koreychenko Koreychenko 14 августа 2013 в 22:48

"mikewing" wrote:
П.С. ТС, а что ты перестал статьи на сайте писать, в прошлом году было достаточно интересно читать.

На постижение дзена уходит слишком много времени ) Скоро напишу чего-нить новенькое.