Форум русской поддержки Joomla!® CMS
09.12.2016, 15:36:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Импорт товаров (Толко 2 поля)

 (Прочитано 8336 раз)
0 Пользователей и 1 Гость смотрят эту тему.
kichik
Захожу иногда
**

Репутация: +4/-0
Offline Offline

Сообщений: 15


« : 01.02.2012, 07:49:07 »

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

В общем идея была такой...
Сидел раньше на 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
Давно я тут
****

Репутация: +10/-0
Offline Offline

Сообщений: 233


« Ответ #1 : 15.03.2012, 18:39:57 »

В общем я перековырял файл импорта simpleimportutf8 и сделал импорт только по 2-м полям, ean (он же артикул) и price (цена).
перековырял Ваш файл на обновление остатков (берутся из файла по ссылке). Как сделать чтобы он автоматически запускался каждый день и ничего не спрашивал?
Записан
kurandin
Осваиваюсь на форуме
***

Репутация: +5/-0
Offline Offline

Сообщений: 161



« Ответ #2 : 31.03.2012, 23:54:02 »

кто подскажет как сделать обновление цен товара из прайса поставщика товара в базе данных #_jshopping_products_attr
по полям price и ean

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

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

Репутация: +165/-0
Offline Offline

Пол: Мужской
Сообщений: 1202


Всё просто...


« Ответ #3 : 01.04.2012, 11:14:28 »

кто подскажет как сделать обновление цен товара из прайса поставщика товара в базе данных #_jshopping_products_attr
по полям price и ean

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

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

Репутация: +4/-0
Offline Offline

Сообщений: 15


« Ответ #4 : 16.04.2012, 08:45:38 »

перековырял Ваш файл на обновление остатков (берутся из файла по ссылке). Как сделать чтобы он автоматически запускался каждый день и ничего не спрашивал?

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

Репутация: +10/-0
Offline Offline

Сообщений: 233


« Ответ #5 : 16.04.2012, 13:28:18 »

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

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

Репутация: +10/-0
Offline Offline

Сообщений: 233


« Ответ #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
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 31


« Ответ #7 : 25.05.2012, 13:23:13 »

А как добавить еще один столбец - наименование? Очень нужна помощь!
Записан
Linfuby
Живу я здесь
******

Репутация: +165/-0
Offline Offline

Пол: Мужской
Сообщений: 1202


Всё просто...


« Ответ #8 : 25.05.2012, 14:54:24 »

Не пробовали использовать этот импорт?
Записан
Solli_86
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 31


« Ответ #9 : 28.05.2012, 20:47:11 »

Нет, не пробовал - впервые в жизни работаю с импортом/экспортом.
Записан
hudoy
Осваиваюсь на форуме
***

Репутация: +5/-0
Offline Offline

Сообщений: 136


« Ответ #10 : 08.06.2012, 09:32:26 »

Кто нибудь разобрался с cron? Как запустить импорт?
Записан
nevigen
Moderator
*****

Репутация: +734/-16
Offline Offline

Пол: Мужской
Сообщений: 8808


http://n*****n.com


« Ответ #11 : 08.06.2012, 22:21:40 »

http://joomlaforum.ru/index.php/topic,214356.0.html
Записан
Solli_86
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 31


« Ответ #12 : 10.06.2012, 21:31:22 »

Не пробовали использовать этот импорт?
Насколько понял я: там далеко не три поля участвует (там нужно заполнять все поля кроме некторорых), то есть не подходит.
Мне нужно три конкретных поля:

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

Репутация: +734/-16
Offline Offline

Пол: Мужской
Сообщений: 8808


http://n*****n.com


« Ответ #13 : 11.06.2012, 16:48:26 »

а добавить кусочек по аналогии для "Название"  ?
Записан
Solli_86
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 31


« Ответ #14 : 12.06.2012, 23:31:25 »

куда и как добавить. Пока что с php на "вы".
Записан
st.al
Давно я тут
****

Репутация: +10/-0
Offline Offline

Сообщений: 233


« Ответ #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
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 31


« Ответ #16 : 26.06.2012, 18:04:26 »

нет - не часто. Так сказать для чайников
Записан
Serega668
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 10


« Ответ #17 : 21.10.2016, 13:54:05 »

У кого-нибудь есть данный файл (обновление по 2 полям)? А то ссылка не работает. Можете поделиться?
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet