Jump to content
Sign in to follow this  
averuga

Только одна единица товара в заказе. Как?

Recommended Posts

Привет, друзья!  В WooCommerce для Wordpress есть одна удобная фича в настройках - возможность задать для товара покупку только одной единицы 

этого товара. Это очень удобно, когда продаются виртуальные скачиваемые товары (pdf и т.п.). И защищает покупателя от ошибки во время оплаты товара

через платёжные агрегаторы. Плюс, скачиваемый товар всегда "В наличии",  вывод этой характеристики в карточке товара отключается за ненадобностью.

Как аналогичную логику реализовать в Opencart?

Подскажите, пожалуйста, решение или модуль.

Спасибо

Share this post


Link to post
Share on other sites

открываем: system\library\cart.php

находим: 

$product = explode(':', $key);

добавляем ниже:

if ($quantity > 1 ) {
	$quantity = 1;
} 

а вот это уже на условие настройки стаивть - отдельная тема...

Share this post


Link to post
Share on other sites

@Baco спасибо! Это будет работать в связке с физическими товарами? Т.е. для физтоваров выбор количества нужен,а для скачиваемых - всегда один экземпляр за заказ.

Share this post


Link to post
Share on other sites

если цифровой товар, продаеться как product_id, то будет, а так, то условие, добавленное - правдиво под все товары, которые попадают в корзину.

Share this post


Link to post
Share on other sites

открываем: system\library\cart.php

находим: 

$product = explode(':', $key);

добавляем ниже:

if ($quantity > 1 ) {
	$quantity = 1;
} 

а вот это уже на условие настройки стаивть - отдельная тема...

Не верное условие, надо на каждый товар вешать проверку

Share this post


Link to post
Share on other sites

Не верное условие, надо на каждый товар вешать проверку

если задача стоит:

возможность задать для товара покупку только одной единицы этого товара

то верно.

Share this post


Link to post
Share on other sites

@Baco @octdev Я наверное не очень корректно задачу сформулировал, извините за косноязычие.

Разрешите уточнить: если товар скачиваемый (их может быть 100 в магазине), то его можно купить только по 1 копии за 1 заказ.

Если товар физический, то его можно купить стандартно, выбрав кол-во штук товара.

Если клиент кладет в корзину физические и скачиваемый товар, то в корзине он может поменять/указать кол-во физических товаров,

а для скачиваемого- не может. 

П.С. В магазине будут и физ, и виртуальные товары, которые могут попасть в единый заказ.

Share this post


Link to post
Share on other sites

что выступает идентификатором скачиваемого товара ? в чем отличие от физического ?

Share this post


Link to post
Share on other sites

Скачиваемые товары будут размещаться в определённой категории, у скачиваемых товаров будет отключена доставка.

Share this post


Link to post
Share on other sites

Вот на доставке можно сыграть...

итак, по новой: открываем: system\library\cart.php

 

находим: 

$this->data[$key] = array(

перед ним пишем:

if (!$product_query->row['shipping'] || ($product_query->row['shipping'] == 0)) {
	$quantity = 1;
}

Share this post


Link to post
Share on other sites

@Baco большое спасибо!

>Плюс, скачиваемый товар всегда "В наличии",  вывод этой характеристики в карточке товара отключается за ненадобностью.

Можно ли, аналогично, привязаться к отключенной доставке,и убрать "В наличии" в шаблоне продукта темы? Т.к. скачиваемые товары - файлы - всегда в наличии.

Share this post


Link to post
Share on other sites

если задача стоит:

то верно.

В текущей здаче да, на мультидвиге решение другое

Share this post


Link to post
Share on other sites

@octdev поделитесь, пожалуйста, своим решением. Я и читатели форума будем благодарны.

Share this post


Link to post
Share on other sites

@Baco подскажите, пожалуйста, как отключить возможность указывать количество для скачиваемого товара в карточке товара в поле "Количество:"?

Это в product.tpl делается (дефолтный шаблон)?

В корзину добавляется только один скачиваемый файл, даже если в карточке указывается два и более, но хочется совсем убрать это поле в карточке скачиваемого товара. 

А для физических товаров - оставить.

 

post-673006-0-64023000-1419101029_thumb.png

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Ребят, не подскажите, как тоже самое сделать только на опенкарт 2.1, там нет переменной $key ? 

Share this post


Link to post
Share on other sites

Ну и что?

А какая переменная есть?

Share this post


Link to post
Share on other sites

вы прикиньте корзину стали хранить не в сессии, а в базе.

Share this post


Link to post
Share on other sites

Это вы мне? или aleuphoria

Share this post


Link to post
Share on other sites

ну я просто удивился, как сильно все изменилось.

Share this post


Link to post
Share on other sites

Для Open Cart 2.3 решение не подскажете?

У меня просто - только цифровые товары, ничего учитывать не надо - просто чтобы не могли купить больше 1...

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.