Ответить Новая тема Новый опрос 
 Способы доставки в карточке товара
wasia
Новичок
Сообщений: 64
Регистрация: 05-10-2011


01-10-2015 18:11
Помогите высветить способы доставки с ценой в карточке товара (product.tpl).

Переискал весь интерент, очень мало информации по этому поподу.

Пытался использовать

Код:
$carriers  = $this->context->cart->simulateCarriersOutput();
$this->context->smarty->assign(
      array('listcarriers' => $carriers));


В product.tpl

Код:
{foreach from=$listcarriers item=carrier name=myLoop}
{if $listcarriers}
<h2>{$carrier.name} - {convertPrice price=$carrier.price}</h2>
{/if}
{/foreach}


но список отображается когда товар добавить в корзину. помогите пожалуйста правильно вывести список доступных методов доставки с ценой.
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


01-10-2015 19:35
Вывести список перевозчиков - возможно.
Обработать и вывести способы доставки со стоимостью доставки - невозможно!

Расчёт выполняется на основе адреса (зоны) покупателя, а также данных корзины который нет - расчёт невозможен.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
wasia
Новичок
Сообщений: 64
Регистрация: 05-10-2011


01-10-2015 21:57
У меня доставка зависит не от цены а от веса товара. мне нужен список перевозчиков с расчетом цены где статически устанавливается id_zone и id_country если нужно.

к примеру,
Код:
$shippingCost = $carrier->getDeliveryPriceByWeight($product->weight, 14);


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

 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


01-10-2015 23:23
Простой способ:
1. В файле /controllers/front/ProductController.php добавить подобный код:
Код:
if($this->product->weight)
{
    $_car = array();
    $carriers = Carrier::getCarriers($this->context->cookie->id_lang, true, false, 4, null);
    foreach ($carriers as &$carrier)
    {
        $_carrier = new Carrier((int)$carrier['id_carrier']);
        if($_carrier->shipping_method == Carrier::SHIPPING_METHOD_WEIGHT)
        {
            if($price = $_carrier->getDeliveryPriceByWeight($this->product->weight, 7))
            {
                $_car[$_carrier->id]['price'] = $price;
                $_car[$_carrier->id]['name'] = $_carrier->name;
            }
        }
    }
    
    if(sizeof($_car))
        $this->context->smarty->assign('carriers', $_car);
}

2. В шаблоне product.tpl разобрать {$carriers}.


Правильно это сделать отдельным модулем и не трогать ядро / контроллеры.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
wasia
Новичок
Сообщений: 64
Регистрация: 05-10-2011


06-10-2015 02:27
это частично решает мою проблему но к сожалению выводит все доступные способы доставки и даже те которые недоступны по весу.
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
wasia
Новичок
Сообщений: 64
Регистрация: 05-10-2011


08-10-2015 21:24
неужели нету решения?
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
dvs@
Новичок
Сообщений: 1
Регистрация: 15-04-2017


15-04-2017 16:31
Подскажите по выводу доставки по условию в карточке.
Например:
if вес равен между 0.01 и 0.1 выводить цена доставки 100 рублей
if вес равен между 0.1 и 0.2 выводить цена доставки 200 рублей
и так далее.
Как кодом это прописать в шаблоне?
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
ruleoffdv


Cпециалист
Сообщений: 209
Регистрация: 05-05-2013


19-04-2017 09:52
Есть модули которые делают это на аддонсах

По себе скажу лучше делать оплату за доставку при получении ( а в магазине указывать беспал но )
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Ответить Новая тема Новый опрос