web3

web3

С нами с 13 сентября 2017; Место в рейтинге пользователей: #309
web3
15 сентября 2017, 06:17
1
0
А не подскажите, вот почти со всем разобрался, единственное, не могу обновить цвета и размеры у товаров, на сколько я понял, они хранятся не так как все остальные(вес, цена)?
На данный момент имею вот это.
<?php
if ($modx->event->name == 'mSyncOnProductOffers') {
$object=$xml->ХарактеристикиТовара;
$array = array();

foreach( $object as $element) {
foreach($element as $item){
$name=addslashes((string)$item->Наименование);
$value=addslashes((string)$item->Значение);
$array[$name] = $value;
}
}
$id=addslashes((int)$resource->id);
$array[id]=intval($id);
$modx->log(4,var_dump($array));

$data = $modx->getObject('msProduct', $array[id]);
if(isset($array[Обхват])){
$size=$array[Размер]."/".$array[Обхват];
$data->set('size',$size);
}
else{
$size=$array[Размер];
$data->set('size',$size);
}
if(isset($array[Цвет])){
$data->set('color',$array[Цвет]);
}
$data->set('weight', 500);
$data->save();
$vendor = $data->get('Vendor');

}
return;
Как сохранять и получать свойства типа цветов, размеров и подобных?
web3
14 сентября 2017, 13:46
1
0
Вот теперь чувствую себя контент менеджером… Спасибо!
web3
14 сентября 2017, 13:40
1
0
Еще спрошу, если можно, как можно получить при срабатывании события mSyncOnProductOffers id товара, к которому это предложение относится?
web3
14 сентября 2017, 12:55
1
0
Вот теперь идеально. Спасибо большое.
web3
14 сентября 2017, 12:43
1
0
Понял, кроме одного момента. Т.е. из коробки характеристики никак не получить?
web3
14 сентября 2017, 06:09
1
0
Залез внутрь компонента, смотрю функцию сохранения товара во временную таблицу вижу что есть работа с характеристиками, уже хорошо. Но характеристики в базу так и не попадают…
/**
     * @param SimpleXMLElement $xml
     * @return array Временные данные товара
     */
    protected function importProduct($xml)
    {
        $prod = array();

        $prod['name'] = $this->stringXml($xml->Наименование);
        $prod['description'] = $this->stringXml($xml->Описание);

        //standart properties
        $prod['article'] = $this->stringXml($xml->Артикул);
        $prod['manufacturer'] = $this->stringXml($xml->Изготовитель);
        $prod['bar_code'] = $this->stringXml($xml->Штрихкод);

        //additional properties
        $prod['properties'] = array();
        if (isset($xml->ЗначенияСвойств)) {
            foreach ($xml->ЗначенияСвойств->ЗначенияСвойства as $xml_property) {
                $this->addComplexProperty($xml_property, $prod['properties']);
            }
        }

        if (isset($xml->СписокСвойствОписания)) {
            foreach ($xml->СписокСвойствОписания->СвойствоОписания as $xml_property) {
                $this->AddProperty($xml_property, $prod['properties']);
            }
        }

        if (isset($xml->ЗначенияРеквизитов)) {
            foreach ($xml->ЗначенияРеквизитов->ЗначениеРеквизита as $xml_property) {
                $this->AddProperty($xml_property, $prod['properties'], array('ВидНоменклатуры', 'ТипНоменклатуры'));
            }
        }

        if (isset($xml->ХарактеристикиТовара)) {
            foreach ($xml->ХарактеристикиТовара->ХарактеристикаТовара as $xml_property) {
                $this->AddProperty($xml_property, $prod['properties']);
            }
        }


        $prod['properties'] = $this->jsonXml($prod['properties']);
        $prod['images'] = $this->jsonXml($xml->Картинка);
        $prod['features'] = $this->jsonXml($xml->ХарактеристикиТовара);

        $prod['uuid'] = $this->stringXml($xml->Ид);
        $prod['parent_uuid'] = $this->stringXml($xml->Группы->Ид);
        $prod['status'] = $this->stringXml($xml->Статус);
        if (empty($prod['status']) && isset($xml->attributes()->Статус)) {
            $prod['status'] = $this->stringXml($xml->attributes()->Статус);
        }

        return $prod;
    }
web3
14 сентября 2017, 05:27
1
0
Окей, есть проблема даже в этом. Есть фаил offers.xml, в котором как раз таки и лежат торговые предложения, а у каждого торгового предложения есть некие характеристики(цвет, размер) которые по идее тоже должны куда-то попадать. Без проблем можно было бы написать простенький обработчик если бы при событии обработки офера в данные не вываливало весь полученный хмл. Пробовал выводить данные проходящие при событии в переменной через лог, так мне фаил раздувало на 200 метров. Файлы импорта весят не более 1,5кб.
P.S. Использовал это событие — mSyncOnProductOffers, выводил $xml. Вместо этого он вывел кучу системной инфы, начиная от ленговых переменных, заканчивая информацией о компонентах и их данные…
Ну да ладно, как хоть получить характеристики из офера? Разные цены из офера у меня подтянулись, а как быть с характеристиками не знаю.
web3
14 сентября 2017, 05:03
1
0
Проблема в том, что использую тестовый хостинг, дабы понять возможно ли выполнить требуемые задачи данным компонентом. В описании сказано что,
Возможности:
— Импорт товаров со свойствами и картинками, торговых предложений из 1С и других сервисов.
Но при этом никакой подробной инструкции и чего либо еще вразумительного. А какой смысл покупать компонент, если он мне может не подойти?
web3
13 сентября 2017, 13:17
1
0
Да, прошу прощения, это наверное даже было взято из документации mSclad, который канул в лету… У этого компонента просто сказано что он импортирует торговые предложения, но как и куда ни слова…
web3
13 сентября 2017, 12:39
1
0
Чую нарвусь на неприятности, но есть один инструмент, называется руки. А по факту, только спецефичный плагин передирающий каталог и по необходимым признакам добавлял товар.