Гриша К.
Новичок
Проблемы при выборе сортировки товара, его производителя, и дополнительных параметров
Здравствуйте.
Прошу ваших советов по решеению следующей задачи.
На странице каталога товаров, необходимо выводить товары в соответствии
- с выбранной сортировкой,
- выбранным производителем,
- выбранным значением типа дополнительных параметров товара (например: Жесткость, Обивка и т.д.)
Например на странице каталога (catid) выбрана сортировка по цене (sort) по убыванию (desc):
/catalog/?catid=59&sort=price&desc=1
-----------------------------
Дальше например пользователь хочет вывести товары по одному производителю (firmid) из списка производителей,
уже выбранные параметры сортировки должны сохраниться, для этого я использую переменную $QUERY_STRING = $_SERVER['QUERY_STRING'].
Ссылка на производителя выглядит так:
$QUERY_STRING&firmid=1 (/catalog/?catid=59&sort=price&desc=1&firmid=1)
Проблема возникает в том что, если производитель уже выбран и пользователь хочет выбрать другого производителя,
то ссылка будет выглядит следующим образом (дублируется $firmid):
$QUERY_STRING&firmid=2 (/catalog/?catid=59&sort=price&desc=1&firmid=1&firmid=2)
-----------------------------
Эту проблему решил так:
В шаблоне Smarty, использую поиск и замену строки, функция PHP preg_replace("firmid=(.*)&", "", $QUERY_STRING)
{assign var="QUERY_STRING_FIRM" value=$QUERY_STRING|regex_replace:"/firmid=(.*)&/":""}
{assign var="QUERY_STRING_FIRM" value=$QUERY_STRING_FIRM|regex_replace:"/&firmid=(.*)/":""}
В итоге "firmid=$firmid" не дублируется.
Как это делаете вы? правильный ли подход?
-----------------
Следующая проблема возникает в том, когда например выводится список параметров в виде ссылок:
Т.е к примеру из жесткости пользователь может выбрать один параметр.
Из обивки пользователь может выбрать тоже только один параметр.
Но одновременно могут быть выбраны одно значение Жесткости и Обивки,
и также должны сохраниться значения выбранного производителя и сортировки (ну это QUERY_STRING)/
Вот как сделать у меня не получается. Подскажите пожалуйста как это можно сделать?
Каким образом вы делаете возможность выбора значений из множества параметров?
Я пробовал делать ссылки так, но у меня не получается в итоге сделать так, как я описал выше:
Жесткость
- Средняя /?$QUERY_STRING&par1=1
- Большая /?$QUERY_STRING&par1=2
- Все /?$QUERY_STRING
Обивка
- Обычная /?$QUERY_STRING&par2=2
- Люкс /?$QUERY_STRING&par2=3
- Все /?$QUERY_STRING
Здравствуйте.
Прошу ваших советов по решеению следующей задачи.
На странице каталога товаров, необходимо выводить товары в соответствии
- с выбранной сортировкой,
- выбранным производителем,
- выбранным значением типа дополнительных параметров товара (например: Жесткость, Обивка и т.д.)
Например на странице каталога (catid) выбрана сортировка по цене (sort) по убыванию (desc):
/catalog/?catid=59&sort=price&desc=1
-----------------------------
Дальше например пользователь хочет вывести товары по одному производителю (firmid) из списка производителей,
уже выбранные параметры сортировки должны сохраниться, для этого я использую переменную $QUERY_STRING = $_SERVER['QUERY_STRING'].
Ссылка на производителя выглядит так:
$QUERY_STRING&firmid=1 (/catalog/?catid=59&sort=price&desc=1&firmid=1)
Проблема возникает в том что, если производитель уже выбран и пользователь хочет выбрать другого производителя,
то ссылка будет выглядит следующим образом (дублируется $firmid):
$QUERY_STRING&firmid=2 (/catalog/?catid=59&sort=price&desc=1&firmid=1&firmid=2)
-----------------------------
Эту проблему решил так:
В шаблоне Smarty, использую поиск и замену строки, функция PHP preg_replace("firmid=(.*)&", "", $QUERY_STRING)
{assign var="QUERY_STRING_FIRM" value=$QUERY_STRING|regex_replace:"/firmid=(.*)&/":""}
{assign var="QUERY_STRING_FIRM" value=$QUERY_STRING_FIRM|regex_replace:"/&firmid=(.*)/":""}
В итоге "firmid=$firmid" не дублируется.
Как это делаете вы? правильный ли подход?
-----------------
Следующая проблема возникает в том, когда например выводится список параметров в виде ссылок:
Т.е к примеру из жесткости пользователь может выбрать один параметр.
Из обивки пользователь может выбрать тоже только один параметр.
Но одновременно могут быть выбраны одно значение Жесткости и Обивки,
и также должны сохраниться значения выбранного производителя и сортировки (ну это QUERY_STRING)/
Вот как сделать у меня не получается. Подскажите пожалуйста как это можно сделать?
Каким образом вы делаете возможность выбора значений из множества параметров?
Я пробовал делать ссылки так, но у меня не получается в итоге сделать так, как я описал выше:
Жесткость
- Средняя /?$QUERY_STRING&par1=1
- Большая /?$QUERY_STRING&par1=2
- Все /?$QUERY_STRING
Обивка
- Обычная /?$QUERY_STRING&par2=2
- Люкс /?$QUERY_STRING&par2=3
- Все /?$QUERY_STRING
Не надо придумывать велосипед.