Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 14 Ответов
  • 1727 Просмотров
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
Возник вопрос. Как сделать чтобы на кнопке "в корзину" после добавления товара отображалось в корзине?
Первое что пришло в голову это лезть в таблицу session и получать от туда данные.
А дальше по условию, если совпадает то 1, если нет то 2.

Есть какие нибудь другие варианты, менее примитивные, через js и jquery например?
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Если в корзине, то.. В корзине..)
« Ответ #1 : 16.08.2014, 20:15:19 »
т.е. такое решение вам кажется слишком легким, и вы хотите усложнить?

Спойлер
[свернуть]
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
Re: Если в корзине, то.. В корзине..)
« Ответ #2 : 16.08.2014, 20:47:36 »
О, юмор..) Ценю..) Картинку сохранил..))
Итак, к делу, я тут напилил AJAX добавление в корзину (на основе AJAX поиска), т.е. мне нужно обновлять динамически. (хотя можно в функцию добавить SELECT или еще как то).

Но, в контроллере cart, в function add есть такой код:
Код
       $session =JFactory::getSession();
       $back_value = array('pid'=>$product_id, 'attr'=>$jshop_attr_id, 'freeattr'=>$freeattribut,'qty'=>$quantity);
       $session->set('product_back_value', $back_value);
Но, никак не получается получить данные из массива, показывает что пустой. (ну или я...) Вроде все варианты перепробовал..
Код
        $dannie = $session->get('product_back_value' ,$back_value);
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Если в корзине, то.. В корзине..)
« Ответ #3 : 16.08.2014, 22:29:59 »
не, я так больше не играю... вот с вами всегда так :) про AJAX добавление нельзя было сразу написать? это ж принципиальные моменты. откуда мне знать, в какой момент времени вам нужна проверка на наличие в корзине? вы или все описывайте, или тогда на сайт экстрасенсов :)

никак не получается получить данные из массива, показывает что пустой

ну видимо потому что
Цитата: \components\com_jshopping\controllers\product.php function display
$session->set('product_back_value',array());

не могу в принципе понять, зачем его получать
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
Re: Если в корзине, то.. В корзине..)
« Ответ #4 : 17.08.2014, 00:07:52 »
Цитировать
про AJAX добавление нельзя было сразу написать?
Ну да. Я обычно стараюсь полностью все объяснять, но тут получилось так, что корзина вышла немного позже, через час...)

Цитировать
не могу в принципе понять, зачем его получать
подумал потому что он в session (session'ы бывают разные) сохраняет id товара, pid=>product_id, плюс типа минус 1 запрос к бд и меньше нагрузка.

Цитировать
ну видимо потому что \components\com_jshopping\controllers\product.php function display
Код
$session->set('product_back_value',array());
Я не понял причины..))

Т.е. если получить данные, то можно добавить функцию в cart.php, ну или в другую, и она будет вызываться сразу после добавления товара, получая при этом свежие данные.
« Последнее редактирование: 17.08.2014, 00:50:01 от shurakana »
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Если в корзине, то.. В корзине..)
« Ответ #5 : 17.08.2014, 10:37:10 »
Но, никак не получается получить данные из массива, показывает что пустой.
Я посмотрел выше
Код: php-brief
if (!$cart->add($product_id, $quantity, $jshop_attr_id, $freeattribut)){
            if ($ajax){
                print getMessageJson();
                die();
            }
            $session =JFactory::getSession();
            $back_value = array('pid'=>$product_id, 'attr'=>$jshop_attr_id, 'freeattr'=>$freeattribut,'qty'=>$quantity);
            $session->set('product_back_value', $back_value);
            $this->setRedirect(SEFLink('index.php?option=com_jshopping&controller=product&task=view&category_id='.$category_id.'&product_id='.$product_id,1,1));
            return 0;
        }
JS не юзаю, но по-моему product_back_value в сессии остается пустым, если:
1. параметр AJAX задан
или
2. товар успешно добавляется
Не будь паразитом, сделай что-нибудь самостоятельно!
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Если в корзине, то.. В корзине..)
« Ответ #6 : 17.08.2014, 14:03:51 »
я просто не могу понять, зачем из сессии пытаться получить product_back_value, если из сессии надо получить товары в корзине? и проверить потом, есть ли текущий товар в корзине.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Если в корзине, то.. В корзине..)
« Ответ #7 : 17.08.2014, 14:34:27 »
я просто не могу понять, зачем из сессии пытаться получить product_back_value
- товар, который НЕ попал в корзину?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Если в корзине, то.. В корзине..)
« Ответ #8 : 17.08.2014, 14:58:00 »
ну... да, возможно конечно... но исходя из названия темы - смысл? :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
Re: Если в корзине, то.. В корзине..)
« Ответ #9 : 17.08.2014, 16:19:36 »
Хорошо, я вас понял, как можно тогда из SESSION вытащить, там же несколько срок полноэкранного текста выходит?
Делать функцию которая обрезает все ненужное...?
Просто многие компоненты используют session, не ужели все они так режут всегда..
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Если в корзине, то.. В корзине..)
« Ответ #10 : 17.08.2014, 16:52:42 »
Хорошо, я вас понял, как можно тогда из SESSION вытащить, там же несколько срок полноэкранного текста выходит?
Делать функцию которая обрезает все ненужное...?
Просто многие компоненты используют session, не ужели все они так режут всегда..
Как вытащить - $session->get(), вы же знаете.
Не понял: какая функция и что должна обрезать?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Если в корзине, то.. В корзине..)
« Ответ #11 : 17.08.2014, 18:40:47 »
во-первых, сессия - это массив, и резать - это я так понимаю про строки, а к значениям массива можно обращаться напрямую

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

ну а в -третьих, для корзины разработчики вообще в принципе модель придумали :)

Код: php
$cart = JModelLegacy::getInstance('cart', 'jshop');
$cart->load();
print_r($cart->products);
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
Re: Если в корзине, то.. В корзине..)
« Ответ #12 : 18.08.2014, 04:38:11 »
У меня не получилось автоматическое создание массива со всеми product_id (подскажите), поэтому сделал так, в принципе хватит;D... но это после перезагрузки страницы будет работать:
Код
$cart = JModelLegacy::getInstance('cart', 'jshop');
$cart->load();
$prover = array($cart->products[1][product_id], $cart->products[2][product_id], $cart->products[3][product_id], $cart->products[4][product_id]);
if (in_array($this->product->product_id, $prover)) {
    echo "в корзине";
}
else {
echo "в корзину";
}


А после клика, будет удаляться кнопка и подставляться другая через js..
Код
$(".click_buy").parent().prepend("<a href='/im/shop/cart/add.html?category_id=1&amp;product_id=8' class=in_cart'>в корзине</a>");
$(".click_buy.button_buy").remove();

А после перезагрузки уже php будет работать..)

Шутим, не стесняемся..))
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Если в корзине, то.. В корзине..)
« Ответ #13 : 18.08.2014, 08:43:00 »
та а че шутить? норм практически. вопрос только - если при добавлении ошибка будет какая-либо (например, нет столько количества). кнопка все равно сменится, а не должна бы... а по поводу массива со всеми product_id - то можно так:
Код: php
$inCart = false;
foreach ($cart->products as $prod) {
if ($this->product->product_id == $prod['product_id']) {
$inCart = true;
break;
}
}
if ($inCart) {
echo "в корзине";
} else {
...
}
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
Re: Если в корзине, то.. В корзине..)
« Ответ #14 : 18.08.2014, 09:01:40 »
Спасибо, сейчас попробую..)
Там после запроса есть success, внутри вставил, поэтому думаю что только при добавлении все таки..

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

P.S. 300-й мой будет..))


« Последнее редактирование: 18.08.2014, 09:14:55 от shurakana »
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Скидка + итоговая сумма в корзине

Автор Simply

Ответов: 14
Просмотров: 1010
Последний ответ 15.03.2023, 18:43:59
от kit2m2
Как переустановить аддон руками если нет архива первоначального?

Автор Dolphin4ik_1

Ответов: 3
Просмотров: 419
Последний ответ 21.11.2022, 14:24:46
от kit2m2
Выбор города если на сайте несколько продавцов уже (joomshopping)

Автор McCafferty

Ответов: 4
Просмотров: 527
Последний ответ 21.09.2022, 10:45:09
от kit2m2
Количество товара в корзине в мега-меню [решено]

Автор jesus

Ответов: 13
Просмотров: 1687
Последний ответ 08.10.2021, 21:42:27
от Mister Shadow
Автообновление суммы в корзине от количество товаров

Автор V1RTUS

Ответов: 4
Просмотров: 2395
Последний ответ 30.06.2021, 21:32:09
от driverXP