Установка minishop на готовый каталог с товарами

Есть каталог с < 2000 товаров в нем. Установить minishop и настроить его я умею. Как мне все эти товары импортировать в магазин minishop? версия modx каталога «MODX Revolution 2.2.2-pl (traditional)».
В принципе могу и последнюю версию MODX поставить и туда все перенести и сверху minishop поставить, но как быть с товарами?
Подскажите решение пожалуйста. Ну или хотя бы маленький мануал куда копать… Спасибо.
Александр Иващенко
03 декабря 2012, 22:13
modx.pro
1 843
0

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

Василий Наумкин
04 декабря 2012, 06:13
0
Указать в настройках, что шаблоны имеющихся товаров — это шаблоны товаров miniShop.

Проделать то же с категориями.

Всё. Не нужно ничего никуда импортировать — у вас уже всё есть, надо только сказать miniShop это использовать.
    Александр Иващенко
    04 декабря 2012, 07:09
    0
    А как быть с изображениями товаров? они у меня через доп. поле TV тип изображение добавлены… и цена у меня в TV. Как с ними быть?
      Василий Наумкин
      04 декабря 2012, 07:54
      0
      Написать простенький скрипт, который достанет значения из ТВ и положит в таблицу miniShop.

      В любом случае, ничего не сломается, не переживайте.
        Александр Иващенко
        18 декабря 2012, 04:06
        0
        наконец дошли руки до импорта значений из TV в поля минишопа «и тут остапа понесло»…
        посмотрите пожалуйста если будет время это:

        вот код из вашего примера
        if (!isset($modx->miniShop) || !is_object($modx->miniShop)) {
            $modx->miniShop = $modx->getService('minishop','miniShop', $modx->getOption('core_path').'components/minishop/model/minishop/', $scriptProperties);
            if (!($modx->miniShop instanceof miniShop)) return '';
        }
        $res = $modx->miniShop->getProduct(294,1,2);
        echo '<pre>';
        print_r($res);
        die;
        294 — ID продукта в минишопе
        выдает в ответ Ошибка HTTP 500 (Internal Server Error)

        так же и
        print_r($miniShop->getProduct(294));
        подскажите в чем я не прав, где ошибся? Спасибо.

          Александр Иващенко
          18 декабря 2012, 04:12
          0
          Жаль удалить своё сообщение не могу… там что то не то наваял…
          так как это все нормально выводит…
          $miniShop = $modx->getService('minishop','miniShop',$modx->getOption('core_path').'components/minishop/model/minishop/',array());
          if (!($miniShop instanceof miniShop)) return 'Class not found!';
          
          print_r($miniShop->getProduct(294,1,2));
          
          die;
          короче я лопух)) будет нормальный вопрос я напишу :)

          Александр Иващенко
          18 декабря 2012, 04:16
          0
          Просто где то тут налажал и не могу найти где
          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;
            Василий Наумкин
            18 декабря 2012, 07:42
            0
            У вас тут какая-то непонятная рабочая мешанина. Судя по коду — вы пытаетесь получить объект ModGoods и сдампить его.

            И?
              Александр Иващенко
              18 декабря 2012, 08:47
              0
              ну я хочу взять значение цены из TV [«tv.tovarPrice»]
              и запихать его в $product price
              но из-за плохого понимания дела у еня не получается. мануала начитался — практики мало, путаюсь что куда нужно
                Василий Наумкин
                18 декабря 2012, 09:32
                0
                Получаем ресурс с id = 15, и переносим его цену из ТВ в таблицу ModGoods
                if ($res = $modx->getObject('modResource', 15)) {
                	$arr = array(
                		'gid' => $res->get('id')
                		,'wid' => 1
                		,'price' => $res->getTVValue('price')
                	);
                	$response = $modx->runProcessor('mgr/goods/update', $arr,
                		array('processors_path' => MODX_CORE_PATH.'components/minishop/processors/')
                	);
                }
                  Александр Иващенко
                  18 декабря 2012, 09:37
                  0
                  ошибка. id в ручную может?
                    Александр Иващенко
                    18 декабря 2012, 09:42
                    0
                    точнее может ModGoods а не modResource?
                      Александр Иващенко
                      18 декабря 2012, 09:48
                      0
                      Array ( [gid] => 294 [wid] => 1 [price] => )
                        Александр Иващенко
                        18 декабря 2012, 09:48
                        0
                        цену не взяло из TV
                          Александр Иващенко
                          18 декабря 2012, 09:49
                          0
                          я лопух :)
                          все есть. все отлично!
                            Александр Иващенко
                            18 декабря 2012, 09:52
                            0
                            или нет… не сохраняет значения
                            в массив выводит
                            Array ( [gid] => 294 [wid] => 1 [price] => 9990 )
                            а
                            $response = $modx->runProcessor('mgr/goods/update', $arr,
                            		array('processors_path' => MODX_CORE_PATH.'components/minishop/processors/')
                            	);
                            не добивает
                            Александр Иващенко
                            18 декабря 2012, 10:05
                            0
                            Василий Наумкин
                            18 декабря 2012, 14:06
                            0
                            Если не путаю, при обновлении нужно обязательно указывать id записи в ModGoods, а при создании товара — только gid, wid и параметры.
                            Александр Иващенко
                            18 декабря 2012, 16:56
                            0
                            тогда тут $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/')
                            );
                            Александр Иващенко
                            18 декабря 2012, 17:56
                            0
                            апдейт не работает

                            $response = $modx->runProcessor('mgr/goods/update', $arr,
                            		array('processors_path' => MODX_CORE_PATH.'components/minishop/processors/')
                            	);
                            Александр Иващенко
                            19 декабря 2012, 00:59
                            0
                            Спасибо за ваши подсказки. Справился :)
                            вот код
                            <?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;
                  Александр Иващенко
                  18 декабря 2012, 08:50
                  0
                  для начала хочу взять
                  товар с 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/')
                  );

                  как то так…
                    Александр Иващенко
                    18 декабря 2012, 08:51
                    0
                    $res      = $product->set('price', $price);
                    вот так цену буду менять… но это в теории на практике не работает вся конструкция
                    Александр Иващенко
                    18 декабря 2012, 08:55
                    0
                    Вопрос заключается в том как правильно взять значение из TV и впихнуть его в переменную или массив
                    так не катит
                    $prArray["tv.tovarPrice"];
                    еще было пару функций которые я использовал:

                    $tvAr = $modx->getTemplateVar('TV_NAME')
                    не проканало
                    и еще пару вариантов
            Александр Иващенко
            04 декабря 2012, 07:06
            0
            А конфликта версий ни какого не будет? ну там уже сравнительно старая 2.2.2… А обновляться до новой как то стремно :)
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            28