Установка minishop на готовый каталог с товарами
Есть каталог с < 2000 товаров в нем. Установить minishop и настроить его я умею. Как мне все эти товары импортировать в магазин minishop? версия modx каталога «MODX Revolution 2.2.2-pl (traditional)».
В принципе могу и последнюю версию MODX поставить и туда все перенести и сверху minishop поставить, но как быть с товарами?
Подскажите решение пожалуйста. Ну или хотя бы маленький мануал куда копать… Спасибо.
В принципе могу и последнюю версию MODX поставить и туда все перенести и сверху minishop поставить, но как быть с товарами?
Подскажите решение пожалуйста. Ну или хотя бы маленький мануал куда копать… Спасибо.
Комментарии: 28
Указать в настройках, что шаблоны имеющихся товаров — это шаблоны товаров miniShop.
Проделать то же с категориями.
Всё. Не нужно ничего никуда импортировать — у вас уже всё есть, надо только сказать miniShop это использовать.
Проделать то же с категориями.
Всё. Не нужно ничего никуда импортировать — у вас уже всё есть, надо только сказать miniShop это использовать.
А как быть с изображениями товаров? они у меня через доп. поле TV тип изображение добавлены… и цена у меня в TV. Как с ними быть?
Написать простенький скрипт, который достанет значения из ТВ и положит в таблицу miniShop.
В любом случае, ничего не сломается, не переживайте.
В любом случае, ничего не сломается, не переживайте.
наконец дошли руки до импорта значений из TV в поля минишопа «и тут остапа понесло»…
посмотрите пожалуйста если будет время это:
вот код из вашего примера
выдает в ответ Ошибка HTTP 500 (Internal Server Error)
так же и
посмотрите пожалуйста если будет время это:
вот код из вашего примера
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));
подскажите в чем я не прав, где ошибся? Спасибо.
Жаль удалить своё сообщение не могу… там что то не то наваял…
так как это все нормально выводит…
так как это все нормально выводит…
$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;
короче я лопух)) будет нормальный вопрос я напишу :)
Просто где то тут налажал и не могу найти где
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;
У вас тут какая-то непонятная рабочая мешанина. Судя по коду — вы пытаетесь получить объект ModGoods и сдампить его.
И?
И?
ну я хочу взять значение цены из TV [«tv.tovarPrice»]
и запихать его в $product price
но из-за плохого понимания дела у еня не получается. мануала начитался — практики мало, путаюсь что куда нужно
и запихать его в $product price
но из-за плохого понимания дела у еня не получается. мануала начитался — практики мало, путаюсь что куда нужно
Получаем ресурс с 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/')
);
}
ошибка. id в ручную может?
точнее может ModGoods а не modResource?
Array ( [gid] => 294 [wid] => 1 [price] => )
цену не взяло из TV
я лопух :)
все есть. все отлично!
все есть. все отлично!
или нет… не сохраняет значения
в массив выводит
в массив выводит
Array ( [gid] => 294 [wid] => 1 [price] => 9990 )
а$response = $modx->runProcessor('mgr/goods/update', $arr,
array('processors_path' => MODX_CORE_PATH.'components/minishop/processors/')
);
не добивает
github.com/bezumkin/miniShop/blob/master/core/components/minishop/processors/mgr/goods/update.php#L31
дак так как нужно написано ведь
дак так как нужно написано ведь
Если не путаю, при обновлении нужно обязательно указывать id записи в ModGoods, а при создании товара — только gid, wid и параметры.
тогда тут $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/')
);
апдейт не работает
$response = $modx->runProcessor('mgr/goods/update', $arr,
array('processors_path' => MODX_CORE_PATH.'components/minishop/processors/')
);
Спасибо за ваши подсказки. Справился :)
вот код
вот код
<?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;
для начала хочу взять
товар с 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/')
);
как то так…
товар с 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/')
);
как то так…
$res = $product->set('price', $price);
вот так цену буду менять… но это в теории на практике не работает вся конструкция
Вопрос заключается в том как правильно взять значение из TV и впихнуть его в переменную или массив
так не катит
$tvAr = $modx->getTemplateVar('TV_NAME')
не проканало
и еще пару вариантов
так не катит
$prArray["tv.tovarPrice"];
еще было пару функций которые я использовал:$tvAr = $modx->getTemplateVar('TV_NAME')
не проканало
и еще пару вариантов
А конфликта версий ни какого не будет? ну там уже сравнительно старая 2.2.2… А обновляться до новой как то стремно :)
miniShop работает на любой версии 2.2.*
шикарно. доделаю проект с меня причитается
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.