Андрей Балкин 15 января 2016 0 3
Добрый день всем!
Нужен совет. На одном из сайтов на базе ShopmodxBox хочется сделать такую штуку. После покупки определенного товара, чтобы рядом с ним горел индикатор что ты уже приобрел этот товар, разумеется когда ты залогинен. Помогите с ходом мысли. Я так понимаю без переопределения процессоров не обойтись…
3 комментария
Fi1osof1
Fi1osof 16 января 2016г в 18:33 #
Добрый день.

разумеется когда ты залогинен.
Это не обязательное условие.

Вопрос: речь только о текущей корзине, или обо всей истории заказов? То есть если человек хоть когда-то этот товар покупал, значит ему надо показывать эту информацию?
А
Андрей Балкин 17 января 2016г в 09:40 #
Добрый день, Николай. Думается что условие обязательное ведь речь идет не только о текущей корзине, а вообще о тех товарах которые когда либо купил данный пользователь
Fi1osof1
Fi1osof 17 января 2016г в 19:00 #
ОК. Пробуйте так в процессоре web/catalog/products/getdata:
protected function setSelection(xPDOQuery $c) {
        $c = parent::setSelection($c); 

        .....................
        
        if($user_id = $this->modx->user->id){
            
            $OrdersTable = $this->modx->getTableName('Order');
            $OrderProductTable = $this->modx->getTableName('OrderProduct');
            
            $c->select(array(
                "(select count(*) FROM {$OrdersTable} o
                    INNER JOIN {$OrderProductTable} pt on o.id = pt.order_id
                    where 
                        pt.product_id = Product.id
                        AND o.contractor = {$user_id}
                ) as `exists`",
            ));
        }
        
        return $c;
    }
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.