Помощь Как создать набор из физических и виртуальных товаров - почти решено!

Kolfg

Мой дом здесь!
Регистрация
20 Авг 2012
Сообщения
352
Реакции
313
Стоит Prestashop 1.7.6.3. Стандартно Prestashop не позволяет создавать наборы из физических и виртуальных товаров в смеси.
Как я решал эту проблему.
Задача была такая: реальным покупателям физических товаров бесплатно предоставлять инструкции в PDF-формате. Халявщикам такие инструкции должны быть недоступны для скачки.
Хотелось обойтись без стороннего модуля.
Создать набор из виртуальных товаров и физических напрямую не получается, как уже говорилось.
Алгоритм решения такой:

  1. Создаем виртуальные товары (инструкции). Ставим им всем цену 0 (ноль) руб.
  2. В настройках виртуальных товаров указываем: "Не показывать нигде". "Доступен для заказа".
  3. Создаем ценовые правила корзины. В условиях указываем. что при покупке какого-либо физического товара в подарок дается товар. В качестве этого товара выбираем виртуальный товар (инструкцию к данному товару). Если надо несколько таких виртуальных товаров добавить в набор, создаем еще аналогичные правила.
  4. Таким образом, мы фактически создаем набор физических и виртуальных товаров. Описание виртуальных товаров в наборе можно задавать напрямую в карточке физического товара.
Если есть подводные камни в таком алгоритме, отпишитесь здесь.

Все прекрасно работает. После оплаты набора на почту приходит ссылка для скачки виртуального товара. Она же появляется в кабинете.

Одна загвоздка возникла и просьба специалистам подсказать, как ее решить.

При просмотре корзины виртуальный товар показывается в виде ссылки в корзине. Таким образом, щелчком на нем можно выйти напрямую на страницу виртуального товара и просто втупую заказать его. Поскольку цена на него выставлена в 0, получается бесплатная скачка.

Каким образом в корзине убрать ссылку на карточку виртуального товара в Prestashop 1.7.6.3? И в других местах, если вдруг это я пропустил.

Дайте, пожалуйста, пошаговое конкретное решение. Сообщество будет благодарно Вам за помощь.
 
Каким образом в корзине убрать ссылку на карточку виртуального товара в Prestashop

например, в настройках модуля OnePageCheckoutPS есть возможность включить редирект сразу на страницу оформления, пропуская отдельную страницу корзины + там же есть возможность выключить ссылку на карточку товара
 
например, в настройках модуля OnePageCheckoutPS есть возможность включить редирект сразу на страницу оформления, пропуская отдельную страницу корзины + там же есть возможность выключить ссылку на карточку товара
Спасибо за подсказку - как вариант учтем. Но ставим цель - обойтись стандартными средствами Prestashop без сторонних модулей :) Как?
 
Спасибо за подсказку - как вариант учтем. Но ставим цель - обойтись стандартными средствами Prestashop без сторонних модулей :) Как?
В файлах cart-detailed-product-line.tpl и cart-summary-product-line.tpl (оба в папке \themes\<ШАБЛОН>\templates\checkout\_partials\) найти строки где есть вывод {$product.url} и сделать условие (если виртуальный или если цена нулевая)
{if <условие>}
{$product.name}
{else}
старый код из шаблона с ссылкой
{/if}

При необходимости {$product.name} обернуть в <div> или <span> и оформить в нужном виде
Но это будет действовать для всех виртуальных или бесплатных товаров. В идеале можно сделать проверку подарочный товар или нет, но может и упрощенного вариант вам хватит.
 
Дополню, то что зверюга сказал. Можно дописать функцию в один из переопределенных классов, на проверку статуса заказа для корзины из контекста. Т.е. Если есть заказ и у него стоит оплачен или какой вы там статус ставите, то будет true и будет выводиться ссылка в корзине, иначе false и ссылке не будет. Это я так алгоритм накидал, пока еду на работу. Если надо, сообщите тут, скину код, вроде был где то на проверку есть ли заказ для корзины.
 
Это я так алгоритм накидал, пока еду на работу. Если надо, сообщите тут, скину код, вроде был где то на проверку есть ли заказ для корзины.

Конечно, надо! Если несложно поподробнее в комментах к коду отпишите, куда и как вставлять или файл оригинальный и измененный для Prestashop 1.7.6.3 приложите, т.к. не все программисты. Будем благодарны Вам за помощь.
 
Конечно, надо! Если несложно поподробнее в комментах к коду отпишите, куда и как вставлять или файл оригинальный и измененный для Prestashop 1.7.6.3 приложите, т.к. не все программисты. Будем благодарны Вам за помощь.
То что я писал выше, решается простой конструкцией
Код:
Order::getOrderByCartId(Context::getContext()->cart->id)

если заказа для корзины пользователя не будет, будет у вас false ,если заказ есть, выдаст id заказа
Можно эту конструкцию добавить шаблон корзины, где выводится ссылка на виртуальный товар.
Там уже надо смотреть по самому сайту, если не сможете сами реализовать, пишите мне в телеграмм.
 
Назад
Сверху