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

КОНТЕНТ доступен только после оплаты


9852739646

Recommended Posts

Добрый день!

Подскажет кто не то как реализовать следующий алгоритм.
У товара есть дополнительное поле (на типа мини-описание) и оно должно быть доступно только после покупки и оплаты (статус заказа оплачено) в той же карточке товара.

Главное подскажите каким алгоритмом в контролере или шаблоне проверить, что:
текущий зарегистрированный пользователь данный товар уже купил и оплатил (статус заказа оплачено)
 

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


Если по быстрому - то так, по хорошему в модель вынести функцию.

 

Контроллер catalog/controller/product/product.php


перед public function index() {

public function getCustomerSales($current_customer_id, $current_product_id){
    $sql = "SELECT DISTINCT pov.customer_id, pov.order_status_id, ovd.product_id FROM ".DB_PREFIX.".order pov LEFT JOIN ".DB_PREFIX.".order_product ovd ON(pov.order_id=ovd.order_id) WHERE pov.customer_id = '". (int)$current_customer_id."' AND ovd.product_id = '". (int)$current_product_id."' AND pov.order_status_id = 19";
    $query = $this->db->query($sql);
    if (isset($query->row['order_status_id'])) {
        return $query->row['order_status_id'];
    } else {
        return 1;
    }
}


после public function index() {

$current_customer_id = $this->customer->getId();
$current_product_id = $this->request->get['product_id'];
$data['order_status'] = $this->getCustomerSales($current_customer_id, $current_product_id);
$data['logged'] = $this->customer->isLogged();


Шаблон catalog/view/theme/ВАША_ТЕМА/template/product/product.tpl

 

<?php if ( $logged && $order_status == 5) { ?>
<!-- Тут блок показываем покупателям, у которых статус 5 -->
<?php } ?>

 

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

Запрос может быть таким


 

$query = $this->db->query("SELECT DISTINCT op.product_id
    FROM `" . DB_PREFIX . "order` o
    LEFT JOIN " . DB_PREFIX . "order_product op ON (o.order_id= op.order_id)
    WHERE o.customer_id = '" . (int)$this->customer->getId() . "'
    AND o.customer_id <> 0
    AND op.product_id = '". (int)$product_id . "'
    AND o.order_status_id in (5,6,7)");

5,6,7  - статусы выполненного заказа
    AND o.customer_id <> 0

Можно исключить. если предварительно проверить пользователя
Ну и вызывать запрос также не каждый раз

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

37 минут назад, smartcoder сказал:

Если по быстрому - то так, по хорошему в модель вынести функцию.

 

Контроллер catalog/controller/product/product.php


перед public function index() {


public function getCustomerSales($current_customer_id, $current_product_id){
    $sql = "SELECT DISTINCT pov.customer_id, pov.order_status_id, ovd.product_id FROM ".DB_PREFIX.".order pov LEFT JOIN ".DB_PREFIX.".order_product ovd ON(pov.order_id=ovd.order_id) WHERE pov.customer_id = '". (int)$current_customer_id."' AND ovd.product_id = '". (int)$current_product_id."' AND pov.order_status_id = 19";
    $query = $this->db->query($sql);
    if (isset($query->row['order_status_id'])) {
        return $query->row['order_status_id'];
    } else {
        return 1;
    }
}


после public function index() {


$current_customer_id = $this->customer->getId();
$current_product_id = $this->request->get['product_id'];
$data['order_status'] = $this->getCustomerSales($current_customer_id, $current_product_id);
$data['logged'] = $this->customer->isLogged();


Шаблон catalog/view/theme/ВАША_ТЕМА/template/product/product.tpl

 


<?php if ( $logged && $order_status == 5) { ?>
<!-- Тут блок показываем покупателям, у которых статус 5 -->
<?php } ?>

 

Благодарю за скорый ответ!
Будем пробывать!

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


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

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

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

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

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

Вхід

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

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

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

×
×
  • Створити...

Important Information

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