eborobot 0 Опубликовано 22 сентября, 2017 Жалоба Share Опубликовано 22 сентября, 2017 запиливаю магаз по продаже скачиваемого товара, убрал все поля "ко-во товара" в корзине, карточке товара и т.д. Но есть еще одна проблема - если нажать кнопку "добавить в корзину", одного и того же товара, несколько раз, то сумма соответственно увеличивается. Как добавить ограничение на ко-во? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 22 сентября, 2017 Жалоба Share Опубликовано 22 сентября, 2017 1 час назад, eborobot сказал: запиливаю магаз по продаже скачиваемого товара, убрал все поля "ко-во товара" в корзине, карточке товара и т.д. Но есть еще одна проблема - если нажать кнопку "добавить в корзину", одного и того же товара, несколько раз, то сумма соответственно увеличивается. Как добавить ограничение на ко-во? По умолчанию такого нет. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 23 сентября, 2017 Жалоба Share Опубликовано 23 сентября, 2017 В 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} и у Вас получится вот так на странице карточки товара: OrderBaseComponent.php function.shopping_cart_in.php Ссылка на сообщение Поделиться на другие сайты
eborobot 0 Опубликовано 25 сентября, 2017 Автор Жалоба Share Опубликовано 25 сентября, 2017 без кэширования работает отлично, с кэшированием - не работает Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 25 сентября, 2017 Жалоба Share Опубликовано 25 сентября, 2017 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(); }); } По идее, его надо править. Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения