0 Пользователей и 1 Гость просматривают эту тему.
  • 18 Ответов
  • 9036 Просмотров
*

kichik

  • Захожу иногда
  • 15
  • 4
Доброе утро... Уже недельку хотел поделиться своей наработкой, но никак руки не доходили.

В общем идея была такой...
Сидел раньше на VM, поначалу нравился, но потом, из-за того что он слишком большой и весит много и БД у них не красява + код написан через опу, решил спрыгнуть... Поставил ЖШ, все отлично, магазин супер, мне нравится, но вот как в VM импорт настоить довольно тяжело... А именно надо чтобы товары не импортировались, а просто обновляли цену, а если потребность только в 2=х полях, зачем лепить 6-7 или скок там их в стандартном импорте? В общем я перековырял файл импорта simpleimportutf8 и сделал импорт только по 2-м полям, ean (он же артикул) и price (цена).
Структура импортируемого файла должна быть такой:
ean;price
000 001;500
000 002;700
...

И кстати... после импорта отображаются все артикулы не обновленных товаров или не добавленных, в самом низу списка выводится кол-во обновленных товаров.

Вот так вот, ну и сам файл:
http://joomshopping-accordion-menu.googlecode.com/files/simpleimportutf8.zip
*

st.al

  • Давно я тут
  • 233
  • 10
Re: Импорт товаров (Толко 2 поля)
« Ответ #1 : 15.03.2012, 18:39:57 »
В общем я перековырял файл импорта simpleimportutf8 и сделал импорт только по 2-м полям, ean (он же артикул) и price (цена).
перековырял Ваш файл на обновление остатков (берутся из файла по ссылке). Как сделать чтобы он автоматически запускался каждый день и ничего не спрашивал?
*

kurandin

  • Осваиваюсь на форуме
  • 159
  • 5
Re: Импорт товаров (Толко 2 поля)
« Ответ #2 : 31.03.2012, 23:54:02 »
кто подскажет как сделать обновление цен товара из прайса поставщика товара в базе данных #_jshopping_products_attr
по полям price и ean

это необходимо именно там, потому что товар размерный и размеры в атрибутах (иногда даже цены отличаются по размерам)

и чтобы в конце было сообщение какие позиции не были найдены в базе данных (новый товар) или в прайсе (отсутствующий товар)
*

Linfuby

  • Живу я здесь
  • 1243
  • 174
  • Всё просто...
Re: Импорт товаров (Толко 2 поля)
« Ответ #3 : 01.04.2012, 11:14:28 »
кто подскажет как сделать обновление цен товара из прайса поставщика товара в базе данных #_jshopping_products_attr
по полям price и ean

это необходимо именно там, потому что товар размерный и размеры в атрибутах (иногда даже цены отличаются по размерам)

и чтобы в конце было сообщение какие позиции не были найдены в базе данных (новый товар) или в прайсе (отсутствующий товар)
Поддерживаю
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

kichik

  • Захожу иногда
  • 15
  • 4
Re: Импорт товаров (Толко 2 поля)
« Ответ #4 : 16.04.2012, 08:45:38 »
перековырял Ваш файл на обновление остатков (берутся из файла по ссылке). Как сделать чтобы он автоматически запускался каждый день и ничего не спрашивал?

Я думаю надо воспользоваться кроном. Как то делал что то похожее, правда та была разработка под drupal и тамышний магазин.
*

st.al

  • Давно я тут
  • 233
  • 10
Re: Импорт товаров (Толко 2 поля)
« Ответ #5 : 16.04.2012, 13:28:18 »
Я думаю надо воспользоваться кроном. Как то делал что то похожее, правда та была разработка под drupal и тамышний магазин.

Допустим с кроном разберусь... но скрипт же действует при нажатии кнопки "импорт"... как от этого избавиться?
ЗЫ наверно глупый вопрос, но для меня жумла и PHP это темный лес с полянками местами...
*

st.al

  • Давно я тут
  • 233
  • 10
Re: Импорт товаров (Толко 2 поля)
« Ответ #6 : 20.04.2012, 22:04:36 »
Вот если кому надо... полностью код моего файлика...

Код
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
jimport('joomla.filesystem.folder');

function getQuantity($product_id)
{
//тут типа API поставщика
$a=file_get_contents("http://типа_ссылка"); //в ответе должно быть число с остатком
if (is_numeric($a))
{
return $a;
} else
{
return 0;
echo $a;
}
}
function getPrice($product_id)
{
//тут типа API поставщика
$a=file_get_contents("http://типа_ссылка"); //в ответе должно быть число с новой ценой
if (is_numeric($a))
{
return $a;
} else
{
return 0;
echo $a;
}
}

class IeUpdateBalancesUtf8 extends IeController
{//имя класса поменял (как и файла и всего остального)
function view()
{
$jshopConfig = &JSFactory::getConfig();
$ie_id = JRequest::getInt("ie_id");
$_importexport = &JTable::getInstance('ImportExport', 'jshop');
$_importexport->load($ie_id);
$name = $_importexport->get('name');
JToolBarHelper::title(_JSHOP_IMPORT. ' "'.$name.'"', 'generic.png' );
JToolBarHelper::custom("backtolistie", "back", 'browser.png', _JSHOP_BACK_TO.' "'._JSHOP_PANEL_IMPORT_EXPORT.'"', false );
JToolBarHelper::spacer();
JToolBarHelper::save("save", _JSHOP_IMPORT);
include(dirname(__FILE__)."/form.php"); 
}

function save()
{
$mainframe =& JFactory::getApplication();
$jshopConfig = &JSFactory::getConfig();
$ie_id = JRequest::getInt("ie_id");
if (!$ie_id) $ie_id = $this->get('ie_id');
$lang = &JSFactory::getLang();
$db = &JFactory::getDBO();
$_importexport = &JTable::getInstance('ImportExport', 'jshop');
$_importexport->load($ie_id);
$alias = $_importexport->get('alias');
$_importexport->set('endstart', time());
$_importexport->store();
//список товаров
$query = "SELECT product_id as id, product_ean as ean, product_price as price FROM `#__jshopping_products` ORDER BY product_id";
$db->setQuery($query);
$rows = $db->loadObjectList();
//=======================================такой замут только из-за ограничения времени выполнения скрипта в 30секунд
$filename = JPATH_COMPONENT_SITE."/rests";
if (!is_file($filename))
{
$rests = fopen($filename, "w");
fclose ($rests);
}
$rests = fopen($filename, "r");
$last_id = fgets($rests);
fclose($rests);
//=======================================
foreach($rows as $row)
{
if ($row->id >= $last_id)
{
$price = getPrice($row->id);//получаю цену
if ($price)
{//публикую товар если цена есть (и больше нуля)
$publish = 1;
} else
{
$publish = 0;
}
$quantity = getQuantity($row->ean);//получаю количество товара
$db->setQuery(' UPDATE `#__jshopping_products` '.
  ' SET product_quantity = "'. $quantity .
  '", product_price = "'. $price .
  '", product_publish = "'. $publish .
  '" WHERE product_ean = "'. $row->ean .'"');
$db->query();
$db->stderr();
$rests = fopen($filename, "w");
$success = fwrite($rests, $row->id);//записываем последний обработанный товар
fclose($rests);
echo "Обновлен товар id=".$row->id."; код товара ean=".$row->ean."; количество товара quantity=".$quantity."; цена price=".$price.";<br>";//ну и пишем пользователю сообщение на всякий
}
}
$rests = fopen($filename, "w");
$success = fwrite($rests, 0);//если цикл кончился - обновились все товары, значит в следущий раз надо начать заново
fclose($rests);
if (!JRequest::getInt("noredirect"))
{
$mainframe->redirect("index.php?option=com_jshopping&controller=importexport&task=view&ie_id=".$ie_id, _JSHOP_COMPLETED);
}
}
}
?>
*

Solli_86

  • Осваиваюсь на форуме
  • 31
  • 0
Re: Импорт товаров (Толко 2 поля)
« Ответ #7 : 25.05.2012, 13:23:13 »
А как добавить еще один столбец - наименование? Очень нужна помощь!
*

Linfuby

  • Живу я здесь
  • 1243
  • 174
  • Всё просто...
Re: Импорт товаров (Толко 2 поля)
« Ответ #8 : 25.05.2012, 14:54:24 »
Не пробовали использовать этот импорт?
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

Solli_86

  • Осваиваюсь на форуме
  • 31
  • 0
Re: Импорт товаров (Толко 2 поля)
« Ответ #9 : 28.05.2012, 20:47:11 »
Нет, не пробовал - впервые в жизни работаю с импортом/экспортом.
*

hudoy

  • Осваиваюсь на форуме
  • 136
  • 5
Re: Импорт товаров (Толко 2 поля)
« Ответ #10 : 08.06.2012, 09:32:26 »
Кто нибудь разобрался с cron? Как запустить импорт?
*

nevigen

  • Moderator
  • 8918
  • 755
  • http://n*****n.com
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

Solli_86

  • Осваиваюсь на форуме
  • 31
  • 0
Re: Импорт товаров (Толко 2 поля)
« Ответ #12 : 10.06.2012, 21:31:22 »
Не пробовали использовать этот импорт?
Насколько понял я: там далеко не три поля участвует (там нужно заполнять все поля кроме некторорых), то есть не подходит.
Мне нужно три конкретных поля:

  • Артикул(EAN)
  • Наименование(название)
  • Цена(price)
« Последнее редактирование: 10.06.2012, 21:41:57 от Solli_86 »
*

nevigen

  • Moderator
  • 8918
  • 755
  • http://n*****n.com
Re: Импорт товаров (Толко 2 поля)
« Ответ #13 : 11.06.2012, 16:48:26 »
а добавить кусочек по аналогии для "Название"  ?
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

Solli_86

  • Осваиваюсь на форуме
  • 31
  • 0
Re: Импорт товаров (Толко 2 поля)
« Ответ #14 : 12.06.2012, 23:31:25 »
куда и как добавить. Пока что с php на "вы".
*

st.al

  • Давно я тут
  • 233
  • 10
Re: Импорт товаров (Толко 2 поля)
« Ответ #15 : 25.06.2012, 10:15:28 »
куда и как добавить. Пока что с php на "вы".

По сути нужно добавить это поле в sql запрос. Соответственно нужно использовать еще одну переменную. Формировать ее значение естественно нужно до этого кода. Жирным выделено, что добавить. Что убрать сами догадайтесь)
                                ...
            $db->setQuery(' UPDATE `#__jshopping_products` '.
                       ' SET product_quantity = "'. $quantity .
                       '", product_price = "'. $price .
                       '", product_publish = "'. $publish .
                       '", name_ru-RU = "'. $name .
                       '" WHERE product_ean = "'. $row->ean .'"');
            $db->query();
            $db->stderr();
                                ...

Тут все просто, смотрите в базе как называется поле которое надо заполнить и в с помощью sql запроса в скрипте заполняете это поле.

Другое дело, что этот запрос обновляет таблицу... раз Вам нужно поле имя, то вероятнее всего хотите не обновить таблицу а заполнить, а раз всего 3 поля, то скорее всего это не жумшопинг вообще. Или часто названия товаров меняются?
« Последнее редактирование: 25.06.2012, 10:19:58 от st.al »
*

Solli_86

  • Осваиваюсь на форуме
  • 31
  • 0
Re: Импорт товаров (Толко 2 поля)
« Ответ #16 : 26.06.2012, 18:04:26 »
нет - не часто. Так сказать для чайников
*

Serega668

  • Захожу иногда
  • 10
  • 0
Re: Импорт товаров (Толко 2 поля)
« Ответ #17 : 21.10.2016, 12:54:05 »
У кого-нибудь есть данный файл (обновление по 2 полям)? А то ссылка не работает. Можете поделиться?
*

Raven23

  • Захожу иногда
  • 12
  • 1
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Импорт/экспорт

Автор apirat

Ответов: 873
Просмотров: 134321
Последний ответ 06.09.2017, 20:45:10
от mario052
Импорт товаров из группы вк

Автор anyfix

Ответов: 1
Просмотров: 195
Последний ответ 14.03.2017, 10:16:47
от dmitry_stas
Выборочный экспорт товаров в Яндекс.маркет

Автор Kamazer

Ответов: 2
Просмотров: 422
Последний ответ 10.06.2016, 18:56:29
от Kamazer
Импорт прайса в XML

Автор malroz

Ответов: 12
Просмотров: 1218
Последний ответ 21.05.2016, 14:56:18
от Berzerker
Импорт товаров из EXCEL (xls, xlsx) файлов

Автор ihhha

Ответов: 23
Просмотров: 8299
Последний ответ 15.04.2016, 13:09:35
от ihhha