msCart: как сделать кнопку "Товар уже в корзине"

Использую сниппет msCart для вывода корзины. Вопрос — как можно сделать, чтобы после добавления в корзину кнопка превращалась в Товар уже в корзине. Где хранится информация об этом?
Григорий
22 июля 2016, 12:10
modx.pro
10
3 593
0

Комментарии: 8

Андрей
22 июля 2016, 18:36
2
+2
Тут уже отвечали на подобный вопрос https://modx.pro/solutions/4844-dynamic-buy-button-in-the-shopping-cart/

Для себя сделал проще, при клике на корзину товара, к контейнеру добавляется класс -in-cart, по нему стилями заменяется кнопка. Что бы при перезагрузке страницы все не сбрасывалось сделал такой сниппет

$cart = $_SESSION['minishop2']['cart'];

foreach($cart as $product) {
  if ($product['id'] == $id) {
    $result = '-in-cart';
  }
}

return $result;

Принимает id товара, если он есть в корзине подставляет класс -in-cart.
    Григорий
    23 июля 2016, 10:56
    0
    Спасибо большое!
      Павел Гвоздь
      23 июля 2016, 11:12
      +1
      Тоже самое можно сделать без сниппета на Fenom.
        Максим
        27 июля 2016, 09:34
        0
        Поделитесь пожалуйста решением на Fenom)
          Павел Гвоздь
          27 июля 2016, 20:00
          +2
          {var $cls = ''}
          {var $product_id = 'тут присваиваем id товара'}
          {var $cart = $.session['minishop2']['cart'] ?: []}
          
          {foreach $cart as $product}
          	{if $product['id'] == $product_id}
          		{var $cls = '-in-cart'}
          		{break}
          	{/if}
          {/foreach}
          Что-то вроде этого. Далее переменную $cls используем для указания класса.
            Максим Кузнецов
            27 июля 2016, 20:35
            0
            {$product_id | in : $cart ? 'значение присутствует в массиве' : 'значение не найдено'}
              Павел Гвоздь
              27 июля 2016, 20:51
              0
              Разве это рабочий вариант?..
                Павел Гвоздь
                27 июля 2016, 20:54
                +1
                Кстати, без скобок он ещё более неработоспособный, даже если б в массиве minishop2 из сессии данные о товарах хранились в виде id => array().
                Fenom ждёт, что после $cart ты ему ещё несколько опций дашь, отсюда там необходимы скобки, которые будут оборачивать "$product_id | in: $cart".
                Но повторюсь: вариант в любом случае не рабочий.
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        8