|
|
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
Зарегистрирован: 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
Панасин Александр
Зарегистрирован: 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
Аниматика
Зарегистрирован: 2005-12-12
Сообщений: 576
|
Проблема в чем, записать сессионные переменные? Для этого куча мануалов есть.
По выборке.
Допустим, вы записали предварительно массив $_SESSION['compare_goods'], содержащий ID товаров.
В системных настройках условие типа такого:
Цитата:$query_where = "a.Message_ID IN(".implode(",", $_SESSION['compare_goods']).")";
|