Перейти к содержанию
Padlik

Нужна помощь с выводом купона на страницу товара

Рекомендуемые сообщения

Прошу помочь с выводом скидочных купонов на странцу товара. Нужно вывести сам код купона.

 

Что делал: добавил в модель model/product.php код получения купона из базы:

 

    public function getCoupon($coupon_id) {
        $query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "coupon WHERE coupon_id = '" . (int)$coupon_id . "'");

        return $query->row;
    }

    public function getCouponByCode($code) {
        $query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "coupon WHERE code = '" . $this->db->escape($code) . "'");

        return $query->row;
    }

    public function getCoupons($data = array()) {
        $sql = "SELECT coupon_id, name, code, discount, date_start, date_end, status FROM " . DB_PREFIX . "coupon";

        $sort_data = array(
            'name',
            'code',
            'discount',
            'date_start',
            'date_end',
            'status'
        );

        if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
            $sql .= " ORDER BY " . $data['sort'];
        } else {
            $sql .= " ORDER BY name";
        }

        if (isset($data['order']) && ($data['order'] == 'DESC')) {
            $sql .= " DESC";
        } else {
            $sql .= " ASC";
        }

        if (isset($data['start']) || isset($data['limit'])) {
            if ($data['start'] < 0) {
                $data['start'] = 0;
            }

            if ($data['limit'] < 1) {
                $data['limit'] = 20;
            }

            $sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
        }

        $query = $this->db->query($sql);

        return $query->rows;
    }

 

Дальше в контроллер продукта добавил:

     $data['coupon_product'] = array();
        
      $coupons = $this->model_checkout_coupon->getCoupons();

         foreach($coupons as $coupon) {
             $data['coupon_product'][] = array(
                 'coupon' => $coupon['code']
             );
         }

 

 

Вывод в шаблон -

    <?php if ($coupon_product) { ?>
        <?php echo $coupon; ?>
    <?php } ?>

 

 

Не работает. Прошу подсказать, что сделал не так.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У купонов есть много условий.
За основу возьмите метод getCoupon, который находится здесь
catalog\model\total\coupon.php

Изменено пользователем thentru

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
32 минуты назад, Padlik сказал:

Вывод в шаблон -

    <?php if ($coupon_product) { ?>
        <?php echo $coupon; ?>
    <?php } ?>

 

 

Не работает. Прошу подсказать, что сделал не так.

 

сделайте вместо     <?php echo $coupon; ?>     <?php var_dump($coupon_product); ?>

и многое прояснится

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В общем разобрался, но не до конца. Прошу помочь. Сейчас сделал вывод купонов на страницу товара, но купоны выводятся на всех товарах, т.е. без учета именно выбранных в админке, на которые распространяется сам купон. Не пойму, как сделать показ купона именно у того товара, к которому он реально привязан. Вывод делал так:

 

product.tpl

<?php foreach ($coupons as $coupon)  { ?>
            <?php if ($coupon['status']) { ?>
       <?php echo $coupon['code']?>
        <?php } ?>
     

контроллер

$this->load->model('extension/total/coupon');
$data['coupons'] = $this->model_extension_total_coupon->getCoupons();

 

 

Пытаюсь сделать так:

 

$this->load->model('extension/total/coupon');
        
      $data['coupon_product'] = array();
        
$data['coupons'] = $this->model_extension_total_coupon->getCoupons();

         foreach($coupons as $coupon) {
             $data['coupon_product'][] = array(
                 'coupon' => $coupon['code']
             );
         }

 

Получаю ошибку Undefined variable: coupons

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Друзья, прошу помочь! Голову уже сломал, никак не могу допилить. Готов оплатить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну так и воспользуйся тем что добавил
"Что делал: добавил в модель model/product.php код получения купона из базы:"
 

$data['coupons'] = $this->model_extension_total_coupon->getCoupon($coupon);

или 

$data['coupons'] = $this->model_extension_total_coupon->getCouponByCode($coupon);

где $coupon  = $product_info['ид или код купона'], смотря что у тебя сохраняет в  "учете именно выбранных в админке"

если я правильно понял условие

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.