Автор Тема: Для виртуального товара определенный метод оплаты?  (Прочитано 688 раз)

02 Март 2017, 15:22:05
  • Ветеран
  • *****
  • Сообщений: 527
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Подскажите,
Необходимо для любого виртуального товара отображать в корзине определенный метод оплаты.
Например только оплата банковской картой, а остальные методы оплаты не указывать.

Как это можно реализовать?
02 Март 2017, 16:02:25
Ответ #1
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Если покупают только один товар, то можно добавить условие в модули оплаты
if ($product->is_virtual)
{  // показвать метод оплаты
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
02 Март 2017, 16:19:43
Ответ #2
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Если покупают только один товар, то можно добавить условие в модули оплаты
if ($product->is_virtual)
{  // показвать метод оплаты
Также и для многих, добавится только цикл. Если в корзине хоть один товар виртуальный, то выводить метод оплаты "хххх".
if($products)
{
    foreach ($products as $product) {
        if ($product['is_virtual'])
        {
            // это вирт. товар
        }       
    }
}
02 Март 2017, 17:40:17
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 527
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Всё правильно
Вот сюда

public function hookPayment($params)
{
 
    if (!$this->active)
        return;
    if (!$this->checkCurrency($params['cart']))
        return;
 
    $this->smarty->assign(array(
        'this_path' => $this->_path,
        'this_path_bw' => $this->_path,
        'this_path_ssl' => Tools::getShopDomainSsl(true, true).__PS_BASE_URI__.'modules/'.$this->name.'/'
    ));
    return $this->display(__FILE__, 'payment.tpl');
}

Добавить:
$products = $this->context->cart->getProducts();
 
if($products)
{
    foreach ($products as $product) {
        if ($product['is_virtual'])
        {
            return false;
        }       
    }
}