minishop2

Добрый день. Направьте или лучше подскажите кто может сталкивался.
Задача следующая: Во время оформления заказа без оплаты или с подключенной оплатой необходимо производить запись в TV поле товаров которые будут оформлены.
1 TV поле числовое, в нем планируется фиксация кол-во оформления-продаж данного товара. Для последующей генерации блока популярные товары.
2 TV поле числовое, в нем планируется фиксация кол-во остатков данного товара.
Vitalik
05 сентября 2017, 09:23
modx.pro
2
1 403
0

Комментарии: 9

Vitalik
05 сентября 2017, 12:58
0
Кстати если с TV все очень сложно можно так же использоваться Опции товара.
    Алексей Шумаев
    05 сентября 2017, 13:29
    0
    Плагин на msOnCreateOrder.
    Там есть $order со всеми товарами. Пройтись по ним и для каждого получить значение TV, обновить его, записать новое.
      Vitalik
      05 сентября 2017, 15:47
      0
      Я дико извиняюсь, но у меня не получилось получить значение TV.
      Вот как я пытался получить его
      foreach ($order->getMany('Products') as $orderProduct) {
      	$tv = $this->modx->getTemplateVar("CountProduct", "*", $orderProduct->get('product_id')); 
      	$tv ['value']
      }
      Запись производить таким методом?
      $sql = "UPDATE table SET values WHERE idTV=1";
          	$select = $this->modx->db->query($sql);
        Алексей Шумаев
        05 сентября 2017, 16:00
        0
        Наверное лучше примерно так:
        $tv_id = 1; #id нужного TV
        $resource = $modx->getObject('modResource',$orderProduct->get('product_id'));
        $tv = $resource->getTVValue($tv_id);
        /* обновляем значение TV  */
        $resource->setTVValue($tv_id,'Новое значение');
          Алексей Шумаев
          05 сентября 2017, 16:10
          0
            Vitalik
            05 сентября 2017, 16:16
            0
            Спасибо за ссылку)
            ТАкой вариант заработал.
            $tvr = $this->modx->getObject('modTemplateVarResource', array(
              'tmplvarid' => 1,
              'contentid' => $orderProduct->get('product_id')
            ));
            if ($tvr) {
              return $tvr->get('value');  
            }
              Vitalik
              05 сентября 2017, 16:56
              0
              Еще раз огромное спасибо, вынес отдельным классом на эвент теперь ведется учет остатков, статус наличия и количество проданных штук в TV полях.
        Дмитрий
        Дмитрий
        06 сентября 2017, 08:06
        0
        ктонить может пытался вывести отдельно название товара в шаблоне письма?
        не через [[+goods]]? Или новую функцию надо писать?
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          9