[Помогите] Товары с "Необходимой доставкой" выцепить в корзине

Тема в разделе "OpenCart", создана пользователем samuel_L, 20 окт 2016.

  1. samuel_L

    samuel_L

    Регистрация:
    6 окт 2012
    Сообщения:
    221
    Симпатии:
    132
    Всем привет.
    Во 2 опенкарте в товарах есть переключатель "необходима доставка". Когда выбирано НЕТ и этот товар в корзине - способы доставки не показываются (вариант 1 - пусто).
    Если в корзине товары с доставкой и без доставки - мы видим способы доставки - все стандартно (вариант 2).

    Вопрос: как вместо пусто (вариант 1) вывести определенный текст, а в варианте 2 вывести текст + стандартные варианты доставки.

    Есть у кого идеи?
     
  2. Baco

    Baco Антихронофаг Команда форума

    Регистрация:
    9 окт 2012
    Сообщения:
    803
    Симпатии:
    399
    Привет... я бы сделал так:
    в system\library\cart.php есть прекрасный метод проверки "необходимости доставки":
    Код:
    public function hasShipping() {
            $shipping = false;
    
            foreach ($this->getProducts() as $product) {
                if ($product['shipping']) {
                    $shipping = true;
    
                    break;
                }
            }
    
            return $shipping;
        }
    тоесть для корзины или страницы оформления можешь добавить блок с проверкой, начиная с контроллера:
    Код:
    $data['is_shipping'] = $this->cart->hasShipping() ? 'block' : 'none';
    а в самой TPL-ке добавляешь блок со стилем display и переменную $is_shipping, вот как то так:
    <div class="mini_description" style="display:<?php echo $is_shipping; ?>;">
    Многабукафф...
    </div>
     
    samuel_L нравится это.
  3. samuel_L

    samuel_L

    Регистрация:
    6 окт 2012
    Сообщения:
    221
    Симпатии:
    132
    Васо, спасибо! Опробую сегодня этот метод
     
  4. samuel_L

    samuel_L

    Регистрация:
    6 окт 2012
    Сообщения:
    221
    Симпатии:
    132
    Васо, опробовал метод.
    В общем он выводит текст для товара, у которого есть доставка, а мне нужно выводить для товара, у которого нет доставки, то есть наоборот.
    Как запросить "наоборот"?)

    Я перегуглил варианты, но, скажем, вариант со сменой вывода block и none не подходит, тк мне нужно отталкиваться именно от товара без доставки.
    То текущем варианте завишу от того, добавлен ли товар с доставкой в корзину, а надо наоборот.

    PS: я попробовал false и true в library, но это кощунство))
     
  5. Baco

    Baco Антихронофаг Команда форума

    Регистрация:
    9 окт 2012
    Сообщения:
    803
    Симпатии:
    399
    Тогда можно вот так метод новый добавить:
    Код:
    public function noShipping() {
            $no_ship = false;
            foreach ($this->getProducts() as $product) {
                if (!$product['shipping']) {
                    $no_ship = true;
                    break;
                }
            }
    
            return $no_ship;
     }
    ну а сам контроллер:
    $data['no_shipping'] = $this->cart->noShipping() ? 'block' : 'none'; //ЕСЛИ есть товар без доставки ТО покажет блок ИНАЧЕ не покажет ничего
     
    samuel_L нравится это.