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

Мне нужно было сделать только два стиля отображения товаров, для этого создал дополнительный файл green.css в котором прописал нужные стили для второго варианта,  и вставил в шаблон таким образом:

<link rel="alternate stylesheet" type="text/css" href=/ПутьДоФайла/green.css" title="green" />

Rel alternate - это альтернативная CSS, которая будет “включаться” по клику пользователя и заменять стили которые прописаны для первого варианта. 

Разумеется можно подключить столько дополнительных стилей сколько душе угодно.

Теперь подключаем скрипт, который собственно и будет "включать" дополнительные таблицы стилей и записывать в cookies информацию о том, какая таблица стилей "включена", а при следующей загрузке страницы он проверяет cookies на наличие "включенной" таблицы стилей, и если такая имеется, то она становится активной.

Сам скрипт:

 function setActiveStyleSheet(title) {    

        var i, a, main;    

        for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {      

        if(a.getAttribute("rel").indexOf("style")!= -1 && a.getAttribute("title"))   

            {        

                a.disabled = true;        

                if(a.getAttribute("title") == title) a.disabled = false;     

            }    

        }  

    }  

       

    function getActiveStyleSheet(){  

        var i, a;    

        for(i=0; (a = document.getElementsByTagName("link")[i]); i++)   

        {      

            if(a.getAttribute("rel").indexOf("style")!= -1 && a.getAttribute("title") && !a.disabled)   

            return a.getAttribute("title");    

        }   

        return null;  

    }  

      

    function getPreferredStyleSheet()   

    {    

        var i, a;    

        for(i=0; (a = document.getElementsByTagName("link")[i]); i++)   

        {      

            if(a.getAttribute("rel").indexOf("style")!= -1 && a.getAttribute("rel").indexOf("alt") == -1 && a.getAttribute("title"))   

            return a.getAttribute("title");    

        }    

        return null;  

    }  

      

    function createCookie(name,value,days)   

    {    

        if (days)   

        {      

        var date = new Date();      

        date.setTime(date.getTime()+(days*24*60*60*1000));      

        var expires = "; expires="+date.toGMTString();    

        }    

        else expires = "";    

        document.cookie = name+"="+value+expires+"; path=/";}  

      

    function readCookie(name)   

    {    

        var nameEQ = name + "=";    

        var ca = document.cookie.split(';');    

        for(var i=0;i < ca.length;i++)   

        {      

            var c = ca[i];      

            while (c.charAt(0)==' ') c = c.substring(1,c.length);      

            if (c.indexOf(nameEQ) == 0)   

            return c.substring(nameEQ.length,c.length);    

        }    

        return null;  

    }  

      

    window.onload = function(e) {    

    var cookie = readCookie("style");    

    var title = cookie ? cookie : getPreferredStyleSheet();    

    setActiveStyleSheet(title);  

    }  

    window.onunload = function(e) {    

    var title = getActiveStyleSheet();    

    createCookie("style", title, 365);  

    }  

    var cookie = readCookie("style");   

    var title = cookie ? cookie : getPreferredStyleSheet();  

    setActiveStyleSheet(title);  

Сохраняем и подключаем скрипт в любом месте страницы:

<script type="text/javascript" src="/ПутьДоСкрипта/styleswitcher.js"></script>

Далее прописываем кнопки для переключения:

<a href="#" class="setka" onclick="setActiveStyleSheet('style'); return false;">Сетка</a>  

<a href="#" class="spisok" onclick="setActiveStyleSheet('green'); return false;">Таблица</a>