создание migx параметров при импорте из 1c
Добрый день!
есть такой плагин
есть такой плагин
<?php
if ($modx->event->name != 'mSyncOnProductImport') return;
$analogTitle = $properties["Аналог"];
$analog = $modx->getObject('modResource', array('pagetitle' => $analogTitle));
$analogId = $analog ? $analog->id : 0;
$colors = explode('•#', $properties["Цвет маркера"]);
$colorName = $colors[0];
$color = count($colors) > 1 ? $colors[1] : "";
if (empty($color) && $analogId == 0) return;
$colorTV = '[{"MIGX_id":"1","colorname":"' . $colorName . '","direct":"' . $analogId . '","color":"' . $color . '"}]';
$resource->setTVValue('scolor', $colorTV);
создает таблицу в migx, но только одну, а как модернизировать, что бы создавались все параметры, если их больше 1
Поблагодарить автора
Отправить деньги
Комментарии: 13
Как-то так:
«Данные из $color» зависят от того, что у Вас в поле «Цвет маркера».
<?php
if ($modx->event->name != 'mSyncOnProductImport') return;
$analogTitle = $properties["Аналог"];
$analog = $modx->getObject('modResource', array('pagetitle' => $analogTitle));
$analogId = $analog ? $analog->id : 0;
$colors = explode('•#', $properties["Цвет маркера"]);
foreach($colors as $key => $color){
$colorTV[$key]['MIGX_id'] = $key;
$colorTV[$key]['colorname'] = '***'; // данные из $color
$colorTV[$key]['direct'] = $analogId;
$colorTV[$key]['color'] = '***'; // данные из $color
}
$colorTV = json_encode($colorTV);
$resource->setTVValue('scolor', $colorTV);
«Данные из $color» зависят от того, что у Вас в поле «Цвет маркера».
работает, но цвета еще надо проставлять и маркер, они разделяются через •#, как их получать теперь?
Я об этом и написал. Что у Вас в $properties[«Цвет маркера»]? Как выглядит строка?
-<ВариантыЗначений>
-<Справочник>
<ИдЗначения>5261fba1-c9a0-11e9-a8cb-7085c2b7a4a6</ИдЗначения>
<Значение>Желтый•#F3F425</Значение>
</Справочник>
-<Справочник>
<ИдЗначения>e4118ca6-816e-11e9-a8c9-7085c2b7a4a6</ИдЗначения>
<Значение>розовый•#BE07C5</Значение>
</Справочник>
</ВариантыЗначений>
вот часть выгрузки
Это в XML, а я про переменную $properties[«Цвет маркера»] в плагине.
Там, если цветов несколько, что содержится? Только одно значение:
Там, если цветов несколько, что содержится? Только одно значение:
Желтый•#F3F425
Или как-то все перечисляются:Желтый•#F3F425,розовый•#BE07C5
почему то попадает только последний вариант, т.е. розовый•#BE07C5
Тогда нужно либо в 1С их прописывать в одном поле, как-нибудь типа
Либо обратиться в поддержку компонента по поводу множественных значений свойств.
Желтый#F3F425•Розовый#BE07C5•Красный#FF0000
и тогда:<?php
if ($modx->event->name != 'mSyncOnProductImport') return;
$analogTitle = $properties["Аналог"];
$analog = $modx->getObject('modResource', array('pagetitle' => $analogTitle));
$analogId = $analog ? $analog->id : 0;
$colors = explode('•', $properties["Цвет маркера"]);
foreach($colors as $key => $color){
$colorTV[$key]['MIGX_id'] = $key;
$colorTV[$key]['colorname'] = explode('#',$color)[0];
$colorTV[$key]['direct'] = $analogId;
$colorTV[$key]['color'] = explode('#',$color)[1];
}
$colorTV = json_encode($colorTV);
$resource->setTVValue('scolor', $colorTV);
Либо обратиться в поддержку компонента по поводу множественных значений свойств.
Спасибо, понял!
еще аналоги по такому же принципу работают, видимо их тоже в цикл нужно, но берет он их тоже по последнему значению
а не знаете, как еще это свойство
-<Изготовитель>
<Ид>30c0f313-b2d5-11e9-a8ca-7085c2b7a4a6</Ид>
<Наименование>Kristroom</Наименование>
</Изготовитель>
отправить в поле minishop2 vendor, стандартный не работает, это из import xml
Направить поле Изготовитель на vendor. В документации есть пример (второй параметр).
к сожалению так не работает, вот что ответил разработчик
Изготовитель у вас тоже как-то не совсем стандартно, вложенный тег с идентификатором, его надо в событии mSyncOnBeforeImportProduct обрабатывать как
$data['manufacturer'] = (string)$xml->Изготовитель->Наименование;
Изготовитель у вас тоже как-то не совсем стандартно, вложенный тег с идентификатором, его надо в событии mSyncOnBeforeImportProduct обрабатывать как
$data['manufacturer'] = (string)$xml->Изготовитель->Наименование;
Может сталкивался кто то с таким
Изготовитель у вас тоже как-то не совсем стандартно, вложенный тег с идентификатором, его надо в событии mSyncOnBeforeImportProduct обрабатывать как
$data['manufacturer'] = (string)$xml->Изготовитель->Наименование;
-<Изготовитель>
<Ид>30c0f313-b2d5-11e9-a8ca-7085c2b7a4a6</Ид>
<Наименование>Kristroom</Наименование>
</Изготовитель>
к сожалению стандартным методом не работаетИзготовитель у вас тоже как-то не совсем стандартно, вложенный тег с идентификатором, его надо в событии mSyncOnBeforeImportProduct обрабатывать как
$data['manufacturer'] = (string)$xml->Изготовитель->Наименование;
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.