Фасетные фильтры и сессия в нескольких окнах

alextech

Новичок
Всем добрый день. Есть такая проблема:

Допустим есть магазин с ветками каталога и фасетными фильтрами. К разным веткам привязаны разные фильтры.
Логика работы примерно такая: пользователь заходит в каталожную ветку, жамкает фильтры, скачет по страничкам листинга(ну типа: первая-2-3-4-последняя), юзает разную сортировку - текущие значения фильтров, сортировки и номер страницы сохраняются в сессии(короче все навигационные переменные).
Когда ему надоедает шастать в этой каталожной ветке он жамкает на другую, соответственно я чищу в сессии все что он нажамкал(не сбрасывая сессию), вывожу ему другие фильтры и т.д.

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

Подскажите плз как это вообще делается/решается.

ЗЫ. есличе сессия через куки работает.
 

ksnk

прохожий
А почему бы не хранить нажамканные фильтры в адресной строке броузера, после символа `#` ?
 

alextech

Новичок
А почему бы не хранить нажамканные фильтры в адресной строке броузера, после символа `#` ?
Ну по разным причинам. Чудовищная строка uri, проблемы с сео, и самое главное надо много чего переписывать. Мне просто такой баг изначально даже в голову не пришел ))

Фильтровать, понятно, ajax'ом
Можно поподробнее? У меня просто ajax не используется вообще, только jquery.
 

Фанат

oncle terrible
Команда форума
Баги здесь не при чем.
стандарты надо знать и соблюдать. А не изобретать собственные велосипеды.
ЗАПРАШИВАЮТ информацию с сайта методом GET. Так написано в СТАНДАРТЕ. Про который пользователи похапе, конечно же, никогда не слышали.

И если ты сделаешь все по стандарту, то никаких проблем не будет. Даже с СЕО.
Но ты, конечно, по примеру всех ламеров, предпочтешь присобачить еще один костыль к своему изначально кривому велосипеду
 

alextech

Новичок
Баги здесь не при чем.
стандарты надо знать и соблюдать. А не изобретать собственные велосипеды.
ЗАПРАШИВАЮТ информацию с сайта методом GET. Так написано в СТАНДАРТЕ. Про который пользователи похапе, конечно же, никогда не слышали.

И если ты сделаешь все по стандарту, то никаких проблем не будет. Даже с СЕО.
Но ты, конечно, по примеру всех ламеров, предпочтешь присобачить еще один костыль к своему изначально кривому велосипеду
Оч странный ответ, при чем тут get вообще. Я гетом и запрашиваю, в чем проблема.
ЗЫ. И уж не знаю как у вас в СШП, но у нас в России, при таком ответе незнакомому человеку обычно в хрюкальце бьют, за невежливость.
 

AnrDaemon

Продвинутый новичок
Если ты гопник, так ты только и умеешь, что "в хрюкальце бить".
Включить голову и подумать, почему тебе отвечают так, как отвечают - для твоего мозга непосильная задача.
 

alextech

Новичок
Во первых для вашего, а не для твоего. Я как-то непривык что-бы всякая школота меня на ты называла.
Во вторых, да, я непрофессиональный программист, и именно по этому задаю вопросы, если бы было иначе я бы здесь очевидно не появился.
К сожалению содержание ваших двух постов не дает ответ на поставленные вопросы, но зато дает хорошее представление о вашей психике и методах самоутверждения за счет других.
Если вам нечего ответить по существу, просто проигнорируйте эту тему, мнение насчет ламеров, гопников и нехватки мозгов можете высказать своим друзьям в контакте.
 
Последнее редактирование:

ksnk

прохожий
...
Можно поподробнее? У меня просто ajax не используется вообще, только jquery.
Если ajax не используется, то даже и не знаю, нужен ли мой совет :)
При кликах на фильтре, все накликанные параметры отражаются в хеше. Например накликан параметр бренд-Самсунг и цвет-красный, Хеш станет примерно таким #brand=Samsung&color=red. Через небольшой период времени, чтобы убедиться, что пользователь перестал нажимать на кнопки фильтра, по адресу /filter?brand=Samsung&color=red улетает get-запрос. Полученный ответ вставляется в нужное место страницы.

Вообще говоря, для сео нужна карта сайта и допускать ботов случайно нажимать на кнопки фильтров не очень гуманно. Или я не понял как связан фильтр c сео?
 

fixxxer

К.О.
Партнер клуба
Ммм.. Хранить в сессии параметры отдельно для каждой ветки?
 

alextech

Новичок
Ммм.. Хранить в сессии параметры отдельно для каждой ветки?
Да, хотелось бы примерно этого. Только с учетом того что корзина должна быть одна )
Можно конечно хранить в сессии заранее все что может быть, но это не гуманно.
 

fixxxer

К.О.
Партнер клуба
А какое отношение корзина имеет к фильтрам? Хранишь фильтры типа в $_SESSION['filters'][$category_id] = $filters_for_category, а корзина она где-то там, сама себе корзина, в каком-нибудь $_SESSION['cart'].
 

alextech

Новичок
А какое отношение корзина имеет к фильтрам? Хранишь фильтры типа в $_SESSION['filters'][$category_id] = $filters_for_category, а корзина она где-то там, сама себе корзина, в каком-нибудь $_SESSION['cart'].
Логично... но дело не совсем в этом. Я возможно не очень подробно расписал
Вот пример - при переходе на главную страницу состояние фильтров чистится. И если юзер открыл главную страницу во втором окне то естественно все сбрасывается.
Можно(и почти все так делают) все состояния запихивать в get запрос, как советовали выше, но я хочу в сессии, если не получится - ну упс...
 

ksnk

прохожий
Если не хранить фильтр в get'е- пропадает возможность послать ссылку с нарытыми в магазине товарами твитером :p
 

alextech

Новичок
Если ajax не используется, то даже и не знаю, нужен ли мой совет :)
При кликах на фильтре, все накликанные параметры отражаются в хеше. Например накликан параметр бренд-Самсунг и цвет-красный, Хеш станет примерно таким #brand=Samsung&color=red. Через небольшой период времени, чтобы убедиться, что пользователь перестал нажимать на кнопки фильтра, по адресу /filter?brand=Samsung&color=red улетает get-запрос. Полученный ответ вставляется в нужное место страницы.

Вообще говоря, для сео нужна карта сайта и допускать ботов случайно нажимать на кнопки фильтров не очень гуманно. Или я не понял как связан фильтр c сео?
Карта есть конечно. Гугл корректно обрабатывает uri и в настройках можно задать все что он не будет нажимать, в яндексе все грустнее, он сам решает что надо, а что нет.
Это скорее перестраховка, возможно и не будет проблем.
По поводу аджакса все понятно, на jquery можно так же сделать, я просто хочу избавиться от длинного и некрасивого uri ))
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Логично... но дело не совсем в этом. Я возможно не очень подробно расписал
Вот пример - при переходе на главную страницу состояние фильтров чистится. И если юзер открыл главную страницу во втором окне то естественно все сбрасывается.
Можно(и почти все так делают) все состояния запихивать в get запрос, как советовали выше, но я хочу в сессии, если не получится - ну упс...
А почему при переходе на главную страницу у тебя должно что-то сброситься?
 
Сверху