Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля

Сравнение товаров в магазине

15.10.2007, 12:17
Stolice

Зарегистрирован:
2007-07-30
Сообщений: 8

Здравствуйте!
Делаю механизм сравнения товаров в интернет-магазине. Отмеченные для сравнения товары(точнее их id) хранятся в сессии. Добавление в список сравнения выполняется аналогично добавлению товара в корзину. Создаю шаблон, который должен выводить отмеченные товары.

Возникли следующие вопросы:
1. Каким образом вывести товары, отмеченные для сравнения на странице?
2. Как сделать так(если используется s_list_class), чтобы вывод был полным, то есть для каждого товара выводилось его полное описание итд(то есть вывод был таким, какой на странице "Отображение объекта", а не "Объект в списке").

Спасибо.
15.10.2007, 12:34
h/z

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

1) создайте макет, в котором у вас будет 2 вызова s_list_class к одному и тому же разделу и шаблону с товаром и передавайте в третьем параметре какой-нибудь флаг, например: &isTitle=1 у одного и &isTitle=2 у другого

2) модифицируйте шаблон с товарами,
- в списке товаром на условие isTitle , полный вывод информации по товару
- в системных настройках
if($isTitle){
$ignore_sub = 1;
$ignore_cc = 1;
$query_where = "a.Message_ID='ваша переменная из сессии'";
}

isTitle 1 или 2 нужно чтобы подставлять правильную переменную из сессии, либо первый товар либо второй.
15.10.2007, 14:07
Stolice

Зарегистрирован:
2007-07-30
Сообщений: 8

Цитата:
- в списке товаром на условие isTitle , полный вывод информации по товару


Имеется ли какая-нибудь функция, или нужно писать что-то типа:
Код:

if(isset($isTitle)){
echo "Шаблон вывода полной информации";
} else {
echo "Шаблон вывода краткой информации";
}
15.10.2007, 14:13
h/z

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

в поле "Объект в списке" нужно добавить
".opt_case($isTitle,"полный вывод товара, такой же как и поле 'Отображение объекта:'","краткий вариант вывода товара")."
15.10.2007, 14:16
Stolice

Зарегистрирован:
2007-07-30
Сообщений: 8

мда, жаль конечно... шаблонов около семидесяти...

в любом случае спасибо за помощь!
15.10.2007, 14:45
Stolice

Зарегистрирован:
2007-07-30
Сообщений: 8

это опять я)
проблема такова: объекты вывожу таким образом, как Вы мне подсказали, вот только они все выводятся вне макета, то есть перед его выводом... как быть?
15.10.2007, 15:29
h/z

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

возможно у вас echo или print где-то в шаблонах фигурирует, это не верно!
там должно быть $result .= "";
15.10.2007, 16:10
Stolice

Зарегистрирован:
2007-07-30
Сообщений: 8

Спасибо, помогло.
12.03.2008, 21:05
DiGGy
DiGGy
DiGGy

Зарегистрирован:
2005-04-04
Сообщений: 1546

Я делал иначе. Немного дописал класс NetShop добавив пару методов:
Код:

/**
* количество товаров в списке сравнений
*/
function CompareCount()

/**
* добавление товара в список сравнений
* (удаление, если количество = 0)
* @param array [$type_id][$id] = $new_qty
* @param string mode ("add": qty=qty+new_qty; otherwise: qty=new_qty)
*/
function ComparePut($array, $mode="")

/**
* Содержимое списка сравнения
* возвращает массив
* Type_ID -- id таблицы message
+ свойства товара
*/
function CompareContents()


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

Такой вариант позволяет не возиться с доп. макетами, внутренними локальными переменными - всё штатно и доступно.

Temet nosce...
09.02.2012, 13:33
Nexwich
Панасин Александр
Nexwich

Зарегистрирован:
2011-04-05
Сообщений: 1037

У меня стоит задача сделать сравнение товаров.
Почитав я практически не чего не понял.
Я создал шаблон в настройки вписал игнорирование выборки но как заставить чтоб в этом шаблоне оказывались товары которые пометил пользователь? Вверху пишут по ссесии но я не знаю что и как сделать и что примерно должно быть на ее месте.
Цитата:
if($isTitle){
$ignore_sub = 1;
$ignore_cc = 1;
$query_where = "a.Message_ID='ваша переменная из сессии'";
}

И как вообще добавлять туда товары (может ссылкой проще будет(мне лучше чекбокс отмечая))?

".($_SESSION['comparation'] && in_array($f_RowID, $_SESSION['comparation']) ? "checked='checked'" : NULL)."
Перезагружая страницу галочки остаются отмечены. Значит в сессию сохраняется. Все же остается вопрос где мне брать ваша переменная из сессии. И что делать потом? Наверно ссылку на страницу с этим шаблоном компонента.

Модуль "Почтовые уведомления" – настройка email уведомлений на вашем сайте без программирования. Бесплатно. http://netcat.ru/products/CatStore/solution_242.html
09.02.2012, 14:06
Asiat
Аниматика
Asiat

Зарегистрирован:
2005-12-12
Сообщений: 576

Проблема в чем, записать сессионные переменные? Для этого куча мануалов есть.

По выборке.
Допустим, вы записали предварительно массив $_SESSION['compare_goods'], содержащий ID товаров.
В системных настройках условие типа такого:
Цитата:
$query_where = "a.Message_ID IN(".implode(",", $_SESSION['compare_goods']).")";


Разработка сайтов на Netcat с 2006... хм-м ... или 2005 хммм года. В общем, обращайтесь.
198 196 2012-02-09 14:06:56 10031
Описание проекта