но их сняли с публикации. Когда удалять ети товари из корзины, на каком етапе ето лучше делать и как?
как вариант - вывести атрибут с публикацией в шаблон вывода товара в корзине, типа data-published="" и написать js-скрипт, который при открытии корзины будет срабатывать, что если товар есть неопубликованный, то кликай по удалению его, ну или указывать пользователю, что в корзине есть такие товары, удали, мол, сам.
++ Прям рабочее решение. Хотя в сниппетах/плагинах конечно было бы наверное правильнее это сделать.
можно еще делать кнопку оформления заказа не активной, пока не удалит из корзины удаленные товары, чтоб пользователь точно удалил бы
Когда-то давно на одном сайте делал плагина на отправку формы заказ. Там идёт проверка. Если товар снят с публикации, тогда человеку приходит уведомление через jGrowl. Но, думаю, это не самое оптимальное решение....
Добавил свой сервис cart и переписал get() public function get(){ $cart = array(); foreach ($this->cart as $key => $item) { if (empty($item['ctx']) || $item['ctx'] == $this->ctx) { $mid = $item['options']['modification']; $q = $this->modx->newQuery('msProduct'); $q->leftJoin('msopModification', 'msop', "msop.rid = msProduct.id AND msop.id = {$mid}"); $q->select(array( $this->modx->getSelectColumns('msProduct','msProduct','', array("id", "pagetitle", "published")), $this->modx->getSelectColumns('msopModification','msop','', array("price", "old_price", "count")) )); $q->where(array( '`msProduct`.`class_key`' => 'msProduct', '`msProduct`.`id`' => $item['id'] )); $q->sortby("id", "ASC"); $q->prepare(); $q->stmt->execute(); if($product = $q->stmt->fetch(PDO::FETCH_ASSOC)){ if($product['count'] == 0 || $product['price'] != $item['price'] || $product['published'] != 1){ unset($this->cart[$key]); }else{ $cart[$key] = $item; } } } } return $cart; } может кому еще понадобится
Обсуждают сегодня