Регистрация
Вход через соцсети
Восстановление пароля

Фильтр товаров на странице + пейджинг

Новый топик
Страницы: 1  |  2
13.03.2007, 14:46
Ответить | Цитировать
Sima

Зарегистрирован:
2007-01-11
Сообщений: 21

Всем доброго дня.

Среда проблемы:
На странице со списком товаров вверху находится фильтр товаров. Фильтр товаров вставлен в "Префикс списка объектов". В фильтре есть такие поля как Ключевое слово (поиск по названиям и описаниям функционал которого добавлен в "Системные настройки", что стандартным способом через srchPat не сделать) и выбор чекбоксов "год выпуска" (опять же стандартно не сделать, поэтому функционал добавлен в "Системные настройки").

Пролема
При выводе пейджинга в ссылке на другую страницу учитываются только стандартные srchPat а кастомные поля фильтра нет

Решение
Я не могу понять из-за чего (предполагаю что из-за mod_rewrite) в $_SERVER["QUERY_STRING" ] находится не только строка запроса(пример:

["QUERY_STRING"]=>
string(190) "REQUEST_URI=goods/skies/mountain/mountain.html&action=index&Keyword=blue&srchPat%5B1%5D=48
&Year%5B%5D=2004&Year%5B%5D=2005&srchPat%5B4%5D=%E1%FD%EA%EA%E0%ED%F2%F0%E8-%F4%F0%E8%F1%F2%E0%E9%EB")
Поэтому приходится парсить.
Код:
$qs = $_SERVER["QUERY_STRING"];
$tmp = explode("&", $qs);
array_shift($tmp);
$qs = implode("&", $tmp);
$cc_env["LocalQuery"] = "?" . $qs;
$result .= "<div>" . browse_messages($cc_env, 5) . "</div>



Собственно ВОПРОС
Верно ли я нашел выход из ситуации или нет? И почему в query string такие данные?

Огромное спасибо за ответы.

З.Ы. Очень был бы рад услышать мнение, мною уважаемого разработчика netcat, kx.

Неткат - это просто!!!
13.03.2007, 14:53
Ответить | Цитировать
Sima

Зарегистрирован:
2007-01-11
Сообщений: 21

Только что еще заметил. Что мой "хак" никак не повлиял на $prevLink и $nextLink
Т.е. на эти переменные почему то $cc_env['LocalQuery'] не распространяется?????
Или я что то не так сделал?

HELP

Неткат - это просто!!!
13.03.2007, 15:29
Ответить | Цитировать
Гость

Зарегистрирован:
1970-01-01
Сообщений: 665

".opt($cc_env[LocalQuery].=opt_case($action,"&action=$action",""),"")."
action - один из элементов фильтра
так их все уопминаете в данной конструкции и тогда все будет учитываться.
13.03.2007, 15:36
Ответить | Цитировать
Sima

Зарегистрирован:
2007-01-11
Сообщений: 21

Я в принципе сделал тоже саме, кроме того что вручную все не прописывал...
Значит правда где-то рядом(с)

Неткат - это просто!!!
13.03.2007, 15:47
Ответить | Цитировать
resident
Веб-группа «Дабл Ю»

Зарегистрирован:
2005-01-10
Сообщений: 336

зачем использовать системное поле Keyword для своих целей
поиск по датам также возможен через srchPat
&Year%5B%5D=2004&Year%5B%5D=2005 - что-то у вас не так
13.03.2007, 15:53
Ответить | Цитировать
Sima

Зарегистрирован:
2007-01-11
Сообщений: 21

resident писал(а):
зачем использовать системное поле Keyword для своих целей
поиск по датам также возможен через srchPat



Упс... а что этот параметр зарезервирован?

Если вам не сложно расскажите пожалуйста, как имея поле "Год", тип строка по которому разрешен поиск выбрать все товары 2004 и 2006 года используя srchPat.
Заранее спасибо.

Неткат - это просто!!!
13.03.2007, 17:42
Ответить | Цитировать
Sima

Зарегистрирован:
2007-01-11
Сообщений: 21

Дело в том что Год у меня хранится как строка, а чекбоксы это я сам для них прописывал что б можно было выбирать любую комбинацию годов.

У меня что с датами что с словом для поиска как раз нужна логика ИЛИ. Значит я поступил верно добавив ее в query_qhere.


И все же вопрос - почему изменения в $cc_env["LocalQuery"] никак не повлияли на $nextLink и $previousLink.

И по ходу дела, может кто сталкивался с выводом ссылки на первую и последнюю страницу в пейджинге?

И на закуску: Есть ли какая то возможность при работе в админ режиме что б тоже работал фильтр товаров. Очень сложно искать 1 определенный товар без фильтра в разделе если их там например 600 с кепкой



PS Живая такая буседка получается, всем спасибо

Неткат - это просто!!!
13.03.2007, 17:51
Ответить | Цитировать
h/z

Зарегистрирован:
2007-02-06
Сообщений: 755

это из исходного кода
Код:
$nextLink = $cc_env['LocalQuery'].(strlen($cc_env['LocalQuery']) > 1 ? "&" : "")."curPos=".$endRow;


должно работать в вашем примере.. единственное смущает использование зарезервированного слова Keyword..

ваше решение использовать query_where для выборки года по логике "ИЛИ",на мой взгляд верно
srchPat может искать только по логике "И"
к тому же "год выпуска" у вас в таблице строкой
13.03.2007, 18:31
Ответить | Цитировать
h/z

Зарегистрирован:
2007-02-06
Сообщений: 755

Цитата:

При выводе пейджинга в ссылке на другую страницу учитываются только стандартные srchPat а кастомные поля фильтра нет


как у вас выглядит ссылка навигации ? у вас Year[] не подхватывается как переменная или даже в ссылке навигации она не присутствует?
13.03.2007, 19:15
Ответить | Цитировать
Sima

Зарегистрирован:
2007-01-11
Сообщений: 21

Например я отфильтровал товары

?action=index&Searchword=b&srchPat%5B1%5D=&srchPat%5B4%5D=

У меня вышло 4 страницы. Так вот в ссылке навигации у меня моя переменная Searchword не отображается. Пример ссылки на 2-ю страницу

?curPos=20&action=index


Все это получается если никак не изменять $cc_env["LocalQuery"]

Неткат - это просто!!!
13.03.2007, 19:59
Ответить | Цитировать
Sima

Зарегистрирован:
2007-01-11
Сообщений: 21

Я воспользовался подсказкой MipH'a и просто сделал для моих полей которые не srchPat добавление в $cc_env["LocalQuery"].

Код:

if($Searchword){
if(strlen($cc_env["LocalQuery"]))
$cc_env["LocalQuery"] .= "&";
$cc_env["LocalQuery"] .= "Searchword=" . $Searchword;
}

if(sizeof($Year)){
if(strlen($cc_env["LocalQuery"]))
$cc_env["LocalQuery"] .= "&";
$cc_env["LocalQuery"] .= "Year[]=" . implode("&Year[]=", $Year);
}



Моя изначальная ошибка была та что я не дописывал а переписывал $cc_env["LocalQuery"]. Т.е. вместо .= использовал = и получается затирал стандартную обработку srchPat'ов. А теперь я к ней(обработке) просто дописал свои кастомные и все.


НО Хотя и nextLink и prevLink появились стандартные srchPat, как и указано в исходнике который запостил h/z. Но мои кастомные поля добавленные в $cc_env["LocalQuery"] там не появились... Вероятно nextLink и prevLink считаются раньше чем выполняется Префикс списка объектов шаблона.

улыбка)) Так и есть как только я перенес вышеуказанные строки в Системные настройки то сразу в nextLink и prevLink появились все параметры фильтра.



Неткат - это просто!!!
198 196 2007-03-15 17:12:28 7061
Страницы: 1  |  2
Описание проекта