Канонический вопрос, ответа на который я пока не нашел: как сделать переключение вида вьюхи между таблицей и сеткой?
Усложняем:
Во вьюхе есть куча exposed фильтров. При переключении вида сортировка сбрасываться не должна. Открытая страница пейджера тоже не должна сбрасываться.
Еще усложняем:
Все это должно работать без перезагрузки страницы через AJAX. (сейчас фильтры работают так)
Что приходит в голову.
Пользователь кликает на кнопочку "сменить вид", мы пишем в переменную $_SESSION['view_mode'] какое-нить значение и перезагружаем вьюху.
В своем модуле реализуем hook_views_pre_render(&$view), в котором меняем style_options с одного вида на другой.
Но, почему-то оно не работает. Внешний вид вьюхи не меняется. Есть ли у вьюхи какие-то инструменты для установки стилей по типу $views->set_display, но $views->set_style?
Комментарии
А может проще через JS+CSS сделать.
Просто добавлять или убирать нужный класс.
Посмотри на стартовой http://www.top-sovet.ru, если это имеется ввиду - расскажу )).
Рассказывай - интересно как решал.
p.s.
переход по пагинатору однако убирает добавленное js-om по клику...
подпишусь, тоже интересно
там выбор не запоминается при возвращении
надо же еще и в $.cookie делать пометку
вот здесь посмотри http://www.animacity.ru/events ,выбери вид и обнови страницу -он сохранится
а как сделано в js можно почитать
Это-то все делается элементарно. Хотелось просто сделать через api. Потому что изменение стиля отображения добавляет еще кучу ништяков, например, стандартную друпаловскую сортировку для таблиц и т.п. А у вас не совсем таблица получается все-таки.
Кстати, ваша проблема со сбросом вида решается банальным переносом специфического класса из непосредственно вьюхи (которая обновляется) на уровень выше. Да хоть в его переносить.
[module=views_modes]
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/
посмотри https://drupal.org/project/views_modes
но js +css лучше однозначно
Я конечно понимаю, что это немного не то, что хотел ТС. Но извините, тут, компетентности не хватает. Просто, раз уж всем стало интересно, как реализовать грид/лист - отписал. А вообще, интересно переключение между вьюсами. Если сделаете - будте добры опубликовать.
Заранее спасибо.
кстати, да, там у меня еще один файлик .js, который изначально сворачивает все при загрузке страницы. Но мысль хорошая. Спасибо за замечание. Нужно дописать.
П.С. ТС, а что ты перестал статьи на сайте писать, в прошлом году было достаточно интересно читать.
На постижение дзена уходит слишком много времени ) Скоро напишу чего-нить новенькое.