Изменение вида каталога «на лету» заменой класса. Как сохранить?
Была у меня похожая задача, делал через cookie js.
Выбор как минимум хорош тем что после посещения посетителем сайта еще раз ему выдача будет показана в удобном для него формате, ибо иногда напрягает при повторном посещении опять менять формат вывода под себя
Сессии обычно используются для хранения информации, которая должна быть привязана к юзеру, но которую нужно защитить от просмотра или изменения. 
Куки идеально подходят для того, чтобы сохранять информацию персонализированную для юзера, если в ней нет никаких секретов от него и изменение которой ни на что важное для сайта\сервера не повлияет. 
Плюс, сессии ограничены по времени, а куки с настройками можно сохранить на разумный период(неделя, месяц) чтобы пользователь который сколь-либо регулярно заходит на сайт, всегда видел свои настройки темы. Ещё более капитально - хранить их в базе для зарегистрированных пользователей, а чтобы не дёргать базу каждый раз - хранить в куках опять же)
Кроме того, всё что в сессии - грузит ваш сервер, миллион пользователей - миллион файлов с массивом настроек. Не стоит злоупотреблять этим хранилищем. От нескольких переменных или массивов не лопнет конечно, но не стоит брать за практику массово хранить в сессии сериализованные объекты, большие массивы информации или статичные для всех юзеров данные.
PS: Насчёт аргумента в ссылке - самая плохая идея... Ссылку могут послать другу, это люди будут произвольно передавать друг другу разные варианты оформления?)