Перейти к содержанию
Форум поддержки пользователей VamShop

ко-во скачиваемого товара не более 1


Рекомендуемые сообщения

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

Ссылка на сообщение
Поделиться на другие сайты
1 час назад, eborobot сказал:

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

По умолчанию такого нет.

Ссылка на сообщение
Поделиться на другие сайты
В 9/22/2017 at 13:42, eborobot сказал:

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

Добавил в код возможность определения товара в корзине.

Вот возьмите исправленный файл /app/Controller/Component/OrderBaseComponent.php

Новую метку /app/Catalog/function/shopping_cart_in.php

и затем в Админке - Оформление - Шаблоны - Шаблон карточки товара меняйте:

          {product_form}
          <div class="form-group">
            <label class="sr-only">{lang}Qty{/lang}</label>
            <input name="product_quantity" class="form-control" id="product_quantity" type="text" value="1" size="1" />
          </div>          
          <div class="form-group">
          <button type="submit" class="btn btn-primary"><i class="fa fa-shopping-cart"></i> {lang}Add to cart{/lang}</button>
          </div>          
          {module alias="one_click_buy" controller="buy" action="link"}
          {module alias="ask_a_product_question" controller="get" action="ask_link"}
          {/product_form}

на:

          {if {shopping_cart_in content_id="{$content_id}"} <> 1}
          {product_form}
          <div class="form-group">
            <label class="sr-only">{lang}Qty{/lang}</label>
            <input name="product_quantity" class="form-control" id="product_quantity" type="text" value="1" size="1" />
          </div>          
          <div class="form-group">
          <button type="submit" class="btn btn-primary"><i class="fa fa-shopping-cart"></i> {lang}Add to cart{/lang}</button>
          </div>          
          {module alias="one_click_buy" controller="buy" action="link"}
          {module alias="ask_a_product_question" controller="get" action="ask_link"}
          {/product_form}
          {else}
          <a href="{$smarty.const.BASE_URL}/page/cart-contents{config value="URL_EXTENSION"}" class="btn btn-primary"><i class="fa fa-shopping-cart"></i> Товар уже в корзине</a>
          {/if}

и у Вас получится вот так на странице карточки товара:

 

Screenshot from 2017-09-23 20-17-58.png

Screenshot from 2017-09-23 20-18-03.png

OrderBaseComponent.php

function.shopping_cart_in.php

Ссылка на сообщение
Поделиться на другие сайты
1 час назад, eborobot сказал:

без кэширования работает отлично, с кэшированием - не работает

Да, кэшируется страница, наверное разве что через ajax как-то обновлять этот блок кнопок, что б сразу менялось, без обновления страницы.

Либо можно вообще кэш на стороне CakePHP отключить.

В /app/Config/core.php внизу закомментировать, т.е. поставить // перед каждой строкой (на карйний случай, можно и удалить этот код, если что, потом оригинальный файл /app/Config/core.php взять их архива с VamShop):

$engine = 'File';

// In development mode, caches should expire quickly.
$duration = '+7 days';
if (Configure::read('debug') > 0) {
	$duration = '+10 seconds';
}

// Prefix each application on the same server with a different string, to avoid Memcache and APC conflicts.
$prefix = 'vamshop_';

/**
 * Configure the cache used for general framework caching. Path information,
 * object listings, and translation cache files are stored with this configuration.
 */
Cache::config('_cake_core_', array(
	'engine' => $engine,
	'prefix' => $prefix . 'cake_core_',
	'path' => CACHE . 'persistent' . DS,
	'serialize' => ($engine === 'File'),
	'duration' => $duration
));

/**
 * Configure the cache for model and datasource caches. This cache configuration
 * is used to store schema descriptions, and table listings in connections.
 */
Cache::config('_cake_model_', array(
	'engine' => $engine,
	'prefix' => $prefix . 'cake_model_',
	'path' => CACHE . 'models' . DS,
	'serialize' => ($engine === 'File'),
	'duration' => $duration
));

Но тогда работать медленее будет.

В идеале надо небольшой jQuery код написать, который при нажатии добавить в корзину, будет не только открывать корзину, но и обновлять блок кнопок Добавить в корзину.

jQuery код открытия корзины после нажатия кнопки Добавить в корзину в /app/webroot/js/vamshop.js

// Ajax cart

  function onProductFormSubmit(id, quantity) {
    var str = $("#product-form"+id).serialize();
    var action = $("#product-form"+id).attr("action");

    $.post(action, str, function(data) {
      $("#shopping-cart-box").html(data);
      //$("html, body").animate({ scrollTop: 0 }, "slow");
      //$(".shopping-cart-widget").addClass("ajax-cart-hightlight");
      $("nav .dropdown-toggle.cart").dropdown("toggle");
      $("nav .navbar-toggle").click();
      $("nav .navbar-toggle").focus();
    });
  }

По идее, его надо править.

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...