Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Доставка и бесплатная доставка


Denyelle

Recommended Posts

Добрый день.

Нужна помощь экспертов)

Вопрос про выбор доставки. Я в админке активировал 2 вида доставки - с фиксированной стоимостью и бесплатную. Они одновременно показываются в корзине.

Мне надо сделать так, чтобы бесплатная доставка показывалась только вт ом случае, если в таблице oc_product в поле free_ship стояло значение 1.

То есть если значение стоит, то вместо фиксированной стоимости показывать Бесплатную доставку иначе показывать доставку с фиксированной стоимостью.

 

Подскажите как такое можно сделать?

 

Спасибо.

Надіслати
Поділитися на інших сайтах


21 минуту назад, Denyelle сказал:

Добрый день.

Нужна помощь экспертов)

Вопрос про выбор доставки. Я в админке активировал 2 вида доставки - с фиксированной стоимостью и бесплатную. Они одновременно показываются в корзине.

Мне надо сделать так, чтобы бесплатная доставка показывалась только вт ом случае, если в таблице oc_product в поле free_ship стояло значение 1.

То есть если значение стоит, то вместо фиксированной стоимости показывать Бесплатную доставку иначе показывать доставку с фиксированной стоимостью.

 

Подскажите как такое можно сделать?

 

Спасибо.

А как же микс? Когда в корзине товар с free_shipping [true] и free_shipping [false] ?

 

Надіслати
Поділитися на інших сайтах

5 минут назад, Eldaeron сказал:

А как же микс? Когда в корзине товар с free_shipping [true] и free_shipping [false] ?

 

Тогда оставлять только бесплатную доставку.

Надіслати
Поділитися на інших сайтах


2 минуты назад, Denyelle сказал:

Тогда оставлять только бесплатную доставку.

Править контроллер catalog/controller/checkout/shipping_metod.php (от отвечает за отображение методов доставки)

Надіслати
Поділитися на інших сайтах

Добавить условие в модель каждой из доставок
Для бесплатной тут catalog\model\shipping\free.php
Для фиксированной тут catalog\model\shipping\flat.php

Змінено користувачем thentru
Надіслати
Поділитися на інших сайтах


3 часа назад, thentru сказал:

Добавить условие в модель каждой из доставок
Для бесплатной тут catalog\model\shipping\free.php
Для фиксированной тут catalog\model\shipping\flat.php

Я так понимаю вы говорите про эту строку?

    $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "zone_to_geo_zone WHERE geo_zone_id = '" . (int)$this->config->get('free_geo_zone_id') . "' AND country_id = '" . (int)$address['country_id'] . "' AND (zone_id = '" . (int)$address['zone_id'] . "' OR zone_id = '0')");

 

Как правильно добавить что free_ship = 1 в oc_product?

Надіслати
Поділитися на інших сайтах


$implode = array();

foreach ($this->cart->getProducts() as $product) {
  $implode[$product['product_id']] = "product_id = '" . (int)$product['product_id'] . "'";
}

if ($implode) {
  $query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "product WHERE free_ship = '1' AND (" . implode(' OR ', $implode) . ")");
    
  if (!$query->num_rows) {
    $status = false;
  }
}

так, например, для бесплатной доставки


т.е. берете id товаров и проверяете запросом есть ли среди них товары с бесплатной доставкой.
Если нет - модуль выводить не нужно

Надіслати
Поділитися на інших сайтах


19 минут назад, thentru сказал:

$implode = array();

foreach ($this->cart->getProducts() as $product) {
  $implode[$product['product_id']] = "product_id = '" . (int)$product['product_id'] . "'";
}

if ($implode) {
  $query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "product WHERE free_ship = '1' AND (" . implode(' OR ', $implode) . ")");
    
  if (!$query->num_rows) {
    $status = false;
  }
}

так, например, для бесплатной доставки


т.е. берете id товаров и проверяете запросом есть ли среди них товары с бесплатной доставкой.
Если нет - модуль выводить не нужно

 Спасибо за предложенный вариант.

 

А в эту строку можно как-то указать? А то не знаю куда именно вставить ваш код в shipping\free.php

 

$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "zone_to_geo_zone WHERE geo_zone_id = '" . (int)$this->config->get('free_geo_zone_id') . "' AND country_id = '" . (int)$address['country_id'] . "' AND (zone_id = '" . (int)$address['zone_id'] . "' OR zone_id = '0')");

 

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.