23 февраля 2018, 23:40 В общем сделал свой рабочий плагин: Если будут советы по его улучшению то милости просим. <?php switch ($modx->event->name) { case 'mSyncAfterImport': $resources = $modx->getCollection('msProduct'); // достаю все товары $output = '<p>Всего ресурсов: '.count($resources).'</p>'; print $output; $count_not_ready = 0; $ress = 0; $output_count = 0; $stack = array(); foreach ($resources as $k => $res) { // прохожу по всем товарам $array = $res->getTVValue('12'); // достаю значение дополнительного поля $response = json_decode($array, true); // записываю дополнительное поле в массв $ids = $res->get('id'); if ($response){ $output_count = 0; foreach ($response as $element) { // прохожу по полям дополнительного поля if ($element['count'] > 0) { // проверяю если количество больше 0 $output_count = 1; $ress++; } } if($output_count != 1){ $res->set('published', 0); $res->save(); $output_count = 0; } } else{ // снять ресурс с публикации $count_not_ready++; $res->set('published',0); $res->save(); } } break; } Вопросы / Снять с публикации много ресрсов 7 +1
23 февраля 2018, 22:41 Грубо говоря вот весь мой код: в котором я разбираю это TV [{"color":"Черный","size":"M","barCode":"2000023492996","count":0}, {"color":"Черный","size":"L","barCode":"2000023493993","count":4}, {"color":"Черный","size":"XL","barCode":"2000023494990","count":3}, {"color":"Черный","size":"XXL","barCode":"2000023495997","count":1}, {"color":"Белый","size":"M","barCode":"2000023488999","count":1}, {"color":"Белый","size":"L","barCode":"2000023489996","count":2}, {"color":"Белый","size":"XL","barCode":"2000023490992","count":4},]И в зависимости от значения count я определяю опубликовывать ли весь ресурс (товар minishop2) на сайте или нет. Т.е. если хотя бы у одного цвета товара есть count > 0 то я публикую этот товар на сайте. Если нет то снимаю с публикации. <?php $resources = $modx->getCollection('msProduct'); // достаю все товары $output = '<p>Всего ресурсов: '.count($resources).'</p>'; print $output; $count_not_ready = 0; $ress = 0; $output_count = 0; $stack = array(); foreach ($resources as $k => $res) { // прохожу по всем товарам $ress++; $array = $res->getTVValue('12'); // достаю значение дополнительного поля $response = json_decode($array, true); // записываю дополнительное поле в массв $ids = $res->get('id'); if ($response){ foreach ($response as $element) { // прохожу по полям дополнительного поля if ($element['count'] > 0) { // проверяю если количество больше 0 $output_count++; array_push($stack, $ids); // записать все id элементов у которых count > 0 } } } else{ // снять ресурс с публикации $count_not_ready++; $res->set('published',0); $res->save(); } //$output .= '<p>['.$k.'] => '.count($resources).'</p>'; } $unarr = array_unique($stack); echo '<p>Всего обработано count: '.$output_count.'</p>'; echo '<p>Всего обработано: '.$ress.'</p>'; echo '<p>Всего снято с публикации: '.$count_not_ready.'</p>'; echo '<p>Всего элементов в массиве: '.count($unarr).'</p>'; unset($output_count); $resources2 = $modx->getCollection('msProduct'); foreach ($resources2 as $k => $res_n){ $ids = $res_n->get('id'); echo $ids; }Все это я повешу на событие mSyncAfterImport я понимаю, что код не изящный но это мой первый сниппет который я делаю сам и был бы рад Вашей помощи Вопросы / Снять с публикации много ресрсов 7 +1
21 февраля 2018, 17:07 написал такой сниппет: <?php $array = $modx->resource->getTVValue('12'); // получаю tv с которым работаю $response = json_decode($array, true); //декодирую json switch ($myparam) { case "size" : foreach ($response as $element) { if ($element['count'] > 0) { echo "<label class=\"barCode_" . $element['barCode'] . "\"> <span>" . $element['size'] . "</span> <input type=\"radio\" name=\"options[size]\" value=\"" . $element['size'] . "\"> </label>"; } else{ echo "<label class=\"barCode_" . $element['barCode'] . "\"> <span>" . $element['size'] . "</span> <input type=\"radio\" name=\"options[size]\" value=\"" . $element['size'] . "\" disabled=\"disabled\"> </label>"; } } break; case "pcode" : foreach ($response as $element) { echo "<span class=\"barCode_" . $element['barCode'] . "\">" . $element['barCode'] . " </span>"; } break; case "pcodetrim" : foreach ($response as $element) { echo "<span class=\"barCode_" . substr($element['barCode'], 8) . "\">" . substr($element['barCode'], 8) . " </span>"; } break; }Как мне его передетать так, что бы для каждого $element['size'] выводились свои $element['barCode'] вывожу сниппет так в 2х местах: [[count_snip_size? &myparam=`size`]] — размер [[count_snip_size? &myparam=`pcode`]] — штрихкод это лучше через js делать или на php в сниппете реализовывается? вот страница где я вывожу этот сниппет Там где размеры — мои размеры И в описании там есть ширихкод т.е. к каждому размеру выводить свой штрихкод я хочу. Подскажите пожалуйста как дальше делать Вопросы / Помогите разобрать json TV 6 0
21 февраля 2018, 14:55 из всего сниппета я только написал: <?php $array = $modx->resource->getTVValue('12'); // id моего TV echo json_encode($array);и мне вывело: [{\"color\":null,\"size\":\"L\",\"barCode\":\"5600008931013\",\"count\":6}, {\"color\":null,\"size\":\"M\",\"barCode\":\"5600008930016\",\"count\":6}, {\"color\":null,\"size\":\"S\",\"barCode\":\"5600008929010\",\"count\":10}, {\"color\":null,\"size\":\"XL\",\"barCode\":\"5600008932010\",\"count\":7}]" Вопросы / Помогите разобрать json TV 6 0
19 декабря 2012, 03:05 вот оформил :) Вопросы / Установка minishop на готовый каталог с товарами 28 0
19 декабря 2012, 00:59 Спасибо за ваши подсказки. Справился :) вот код <?php $catalog_root_id = 3; $depth = 5; if (!$modx->hasPermission('edit_document')) return $modx->error->failure($modx->lexicon('access_denied')); $miniShop = $modx->getService('minishop','miniShop',$modx->getOption('core_path').'components/minishop/model/minishop/',array()); if (!($miniShop instanceof miniShop)) return 'Class not found!'; echo '<pre>'; $ids = $modx->getChildIds($catalog_root_id, $depth); $docs = $modx->getCollection('modResource', array( 'id:IN' => $ids ,'alias:!=' => 'f' ,'isfolder' => 0 )); echo "<p>Количество найденных товаров: " . count($docs) . " шт.<p>"; foreach($docs as $res) { if (!$good = $modx->getObject('ModGoods', array('gid' => $res->get('id')))) { $good = $modx->newObject('ModGoods'); } $good->set('gid', $res->get('id')); $good->set('wid', 1); $good->set('price', floatval($res->getTVValue('tovarPrice'))); $result = $good->save(); echo $result ? "<p style=\"color:green\"><b>{$res->get('id')}</b> успешно обновлена цена товара с TV значения</p>" : "<p style=\"color:red\"><b>{$res->get('id')}</b> не удалось импортировать цену с TV значения</p>"; } die; Вопросы / Установка minishop на готовый каталог с товарами 28 0
18 декабря 2012, 17:56 апдейт не работает $response = $modx->runProcessor('mgr/goods/update', $arr, array('processors_path' => MODX_CORE_PATH.'components/minishop/processors/') ); Вопросы / Установка minishop на готовый каталог с товарами 28 0
18 декабря 2012, 16:56 тогда тут $arr не подходит что ли так как там gid и нужно idуказывать? $response = $modx->runProcessor('mgr/goods/update', $arr, array('processors_path' => MODX_CORE_PATH.'components/minishop/processors/') );как то так? -> $response = $modx->runProcessor('mgr/goods/update', array('id'=>$res->get('id'), 'price'=>$price, 'wid'=>1), array('processors_path' => MODX_CORE_PATH.'components/minishop/processors/') ); Вопросы / Установка minishop на готовый каталог с товарами 28 0
18 декабря 2012, 10:05 github.com/bezumkin/miniShop/blob/master/core/components/minishop/processors/mgr/goods/update.php#L31 дак так как нужно написано ведь Вопросы / Установка minishop на готовый каталог с товарами 28 0
18 декабря 2012, 09:52 или нет… не сохраняет значения в массив выводит Array ( [gid] => 294 [wid] => 1 [price] => 9990 )а $response = $modx->runProcessor('mgr/goods/update', $arr, array('processors_path' => MODX_CORE_PATH.'components/minishop/processors/') );не добивает Вопросы / Установка minishop на готовый каталог с товарами 28 0
18 декабря 2012, 09:49 я лопух :) все есть. все отлично! Вопросы / Установка minishop на готовый каталог с товарами 28 0
18 декабря 2012, 09:48 цену не взяло из TV Вопросы / Установка minishop на готовый каталог с товарами 28 0
18 декабря 2012, 09:48 Array ( [gid] => 294 [wid] => 1 [price] => ) Вопросы / Установка minishop на готовый каталог с товарами 28 0
18 декабря 2012, 09:42 точнее может ModGoods а не modResource? Вопросы / Установка minishop на готовый каталог с товарами 28 0
18 декабря 2012, 09:37 ошибка. id в ручную может? Вопросы / Установка minishop на готовый каталог с товарами 28 0
18 декабря 2012, 08:55 Вопрос заключается в том как правильно взять значение из TV и впихнуть его в переменную или массив так не катит $prArray["tv.tovarPrice"];еще было пару функций которые я использовал: $tvAr = $modx->getTemplateVar('TV_NAME') не проканало и еще пару вариантов Вопросы / Установка minishop на готовый каталог с товарами 28 0
18 декабря 2012, 08:51 $res = $product->set('price', $price);вот так цену буду менять… но это в теории на практике не работает вся конструкция Вопросы / Установка minishop на готовый каталог с товарами 28 0
18 декабря 2012, 08:50 для начала хочу взять товар с id 294 $product = $miniShop->getProduct(294,1,2); потом запихнуть его в массив потом взять и в архив запихнуть tv.tovarPrice по идее как то так: $prArray[«tv.tovarPrice»]; после сделать замену цены таким макаром $response = $modx->runProcessor('mgr/goods/update', array('id'=>$id, 'price'=>$price, 'wid'=>1), array('processors_path' => MODX_CORE_PATH.'components/minishop/processors/') ); как то так… Вопросы / Установка minishop на готовый каталог с товарами 28 0
18 декабря 2012, 08:47 ну я хочу взять значение цены из TV [«tv.tovarPrice»] и запихать его в $product price но из-за плохого понимания дела у еня не получается. мануала начитался — практики мало, путаюсь что куда нужно Вопросы / Установка minishop на готовый каталог с товарами 28 0
18 декабря 2012, 04:16 Просто где то тут налажал и не могу найти где if (!$modx->hasPermission('edit_document')) { return $modx->error->failure($modx->lexicon('access_denied')); } $miniShop = $modx->getService('minishop','miniShop',$modx->getOption('core_path').'components/minishop/model/minishop/',array()); if (!($miniShop instanceof miniShop)) return 'Class not found!'; //$product = $modx->miniShop->getProduct(294,1,2); $product = $modx->getObject('ModGoods', array('gid'=>294, 'wid'=>1)); //$prArray = $product->toArray(); var_dump($product); die; $price = $prArray["tv.tovarPrice"]; $id = $prArray["id"]; $res = $product->set('price', $price); /*$response = $modx->runProcessor('mgr/goods/update', array('id'=>$id, 'price'=>$price, 'wid'=>1), array('processors_path' => MODX_CORE_PATH.'components/minishop/processors/') );*/ if ($res/*$response->isError()*/) { echo "<p style=\"color:red\"><b>$id</b> не удалось импортировать цену с TV значения</p>"; } else { echo "<p style=\"color:green\"><b>$id</b> успешно обновлена цена товара с TV значения</p>"; } die; Вопросы / Установка minishop на готовый каталог с товарами 28 0
[videoGallery] Видео галерея YouTube, Vimeo Невозможно установить пакет с подписью: videogallery-1.4.0-beta Ошибка установки Error в /core/packages/videogallery-1.4.0-beta/modCategory/7fc931a7772edc9752c16e9c41eb5e52.reso...
mxBoard: канбан-доска для команд, людей и ИИ-агентов в MODX 3 Привет, добавил пользователя в группу mxBoard(4), создал токен. Добавляю все в postman пишет: rest: { «success»: false, «message»: «Недействительный токен.», «data...
Релиз miniShop2 ver. 4.4.1 & 4.4.2 Подскажите пожалуйста, может я что-то не знаю или упустил. Но есть ли решение по глюку с radio? Указываешь свое radio c одинаковым name и в результате при переключении получаешь вс...
Плагин EnvBadge: визуальный индикатор окружения в админке MODX3 Расскажите пожалуйста как вы настраиваете сайт на MODX 3 чтобы был dev, prod, stage. Можете описать workflow? Допустим у меня 80% — это магазины, там клиенты, продажи, все онлай...
MaxNotify Обновление компонента 1.3.0-pl (22.07.2026) — добавлено автоматическое получение полей через msOrder->toArray(); — массивы и объекты безопасно пропускаются; — стандартные...
MyFavorites MyFavorites — 3.0.0-beta Первая версия для MODX Revolution 3.x — компонент полностью переписан с нуля (PHP >= 8.4, namespaced-ядро MODX 3, PSR-4, сервис-ориентированная архит...
Если будут советы по его улучшению то милости просим.
в котором я разбираю это TV
И в зависимости от значения count я определяю опубликовывать ли весь ресурс (товар minishop2) на сайте или нет. Т.е. если хотя бы у одного цвета товара есть count > 0 то я публикую этот товар на сайте. Если нет то снимаю с публикации.
Все это я повешу на событие mSyncAfterImport
я понимаю, что код не изящный но это мой первый сниппет который я делаю сам и был бы рад Вашей помощи
Как мне его передетать так, что бы для каждого $element['size'] выводились свои $element['barCode']
вывожу сниппет так в 2х местах:
[[count_snip_size? &myparam=`size`]] — размер
[[count_snip_size? &myparam=`pcode`]] — штрихкод
это лучше через js делать или на php в сниппете реализовывается?
вот страница где я вывожу этот сниппет
Там где размеры — мои размеры
И в описании там есть ширихкод
т.е. к каждому размеру выводить свой штрихкод я хочу. Подскажите пожалуйста как дальше делать
и мне вывело:
вот код
как то так? ->
дак так как нужно написано ведь
в массив выводит
а
не добивает
все есть. все отлично!
так не катит еще было пару функций которые я использовал:
$tvAr = $modx->getTemplateVar('TV_NAME')
не проканало
и еще пару вариантов
товар с id 294
$product = $miniShop->getProduct(294,1,2);
потом запихнуть его в массив
потом взять и в архив запихнуть tv.tovarPrice
по идее как то так: $prArray[«tv.tovarPrice»];
после сделать замену цены таким макаром
$response = $modx->runProcessor('mgr/goods/update',
array('id'=>$id, 'price'=>$price, 'wid'=>1),
array('processors_path' => MODX_CORE_PATH.'components/minishop/processors/')
);
как то так…
и запихать его в $product price
но из-за плохого понимания дела у еня не получается. мануала начитался — практики мало, путаюсь что куда нужно