VM 2.x CSV Improved для Virtuemart 2.x

dvd_xaker

Постоялец
Регистрация
27 Сен 2011
Сообщения
133
Реакции
14
Если есть поделитесь((( Нигде нет а так охота задействовать именно J2.5

Новые версии ТОЛЬКО в теме CSVI Pro
Для просмотра ссылки Войди или Зарегистрируйся
 
Последнее редактирование модератором:
Я указал в правиле импорта какие отвечают за разделения.
То что у тебя - и так понятно. Это просто custom fields.
У меня же трабла именно в импорте custom_param

Выложи файл свой csv
Или часть его, именно в csv как ты импортируешь.
 
Столкнулся с такой ситуацией!
Использую движок Virtuemart 2.x
Для загрузки товара использую CSV Improved.
CSV Improved справляется с задачей на 50%. (поэтапная загрузка товара)
Остальные 50% приходиться делать ручками! (формирование прайс листа/ подготовка файлов CSV)
Но остатки и цены у поставщиков могут обновляться (1-2 раза в день)!
Как бороться с этим?
Ребята у кого есть опыт поделитесь, посоветуйте готовое решение проблемы! Спасибо!
 
Последнее редактирование:
Столкнулся с такой ситуацией!
Использую движок Virtuemart 2.x
Для загрузки товара использую CSV Improved.
CSV Improved справляется с задачей на 50%. (поэтапная загрузка товара)
Остальные 50% приходиться делать ручками! (формирование прайс листа/ подготовка файлов CSV)
Но остатки и цены у поставщиков могут обновляться (1-2 раза в день)!
А как бороться с этим?
Ребята у кого есть опыт поделитесь, посоветуйте готовое решение проблемы! Спасибо!

Ничего не понятно, откровенно говоря. Что мешает разделить файл csv на 2-3 части и кусками загружать, если сервер отказывается кушать целиком?

Если же речь о необходимости синхронизации, ну, так настрой крон-команды. Кто запрещает?
 
Последнее редактирование:
Ничего не понятно, откровенно говоря
Ок, сейчас попытаюсь объяснить...
Что мешает разделить файл csv на 2-3 части и кусками загружать
Ничего не мешает! я так и делаю! CSV Improved справляется с задачей на 50%. (поэтапная загрузка товара, "частями")
сервер отказывается кушать целиком?
Все отлично он "кушает"
Проблема в том что, каждый день поставщик присылает новый прайс (с новыми ценами и остатками).
Я не могу сверять/менять каждый день 2000-5000 позиций! Магазин по продаже электроники.
Как быть? У кого есть опыт поделитесь! Спасибо!
 
Если же речь о необходимости синхронизации, ну, так настрой крон-команды. Кто запрещает?
Либо закажи разработку синхронизации вручную с эксель-прайсом, к примеру, чтобы они сами могли закидывать прайс на сервер, без твоего участия, да скрипт станет подцеплять его автоматически и обновлять горе-цены.
 
Речь о необходимости синхронизации
Да, именно так!
Пр: готовый файл CSV (подогнанный прайс) храниться на ftp, в определенное время (время синхронизации - любое) CRON команда, считывает и меняет product_price, на все позиции которые есть в файле CSV . Правильно я вас понял?
Кто настраивал CRON команду через CSV Improved? Какие "подводные камни"?
Может быть у кого нибудь есть пример кода! ? Спасибо!
 
Последнее редактирование:
Кто настраивал CRON команду через CSV Improved? Какие "подводные камни"?
Может быть у кого нибудь есть пример кода! ? Спасибо!

1) Нужно давать прайс не большими порциями, так как CSVI не может (не успевает) обработать более 1500-2000 строк (в зависимости от мощности, загрузки сервера и количества полей в файле) за 1 запрос.

2) Рекомендую создать дополнительного админа (уч. запись), так как после выполнения CRON задания розлогиниться и вас выбросит из учетки.

3) Вот пример Cron задания:
Код:
/usr/local/php53/bin/php -f "/home/account/mysite.com/www/administrator/components/com_csvi/helpers/cron.php" username="admin" passwd="mypasword" template_id="20" jform:general:local_csv_file="/home/account/mysite.com/www/csv_catalog/file01.csv"

4) Существуют еще мелочи, но они более индивидуальны и зависят от настроек\условий вашего хостинга.


З.Ы. Как поделить большой на маленькие?)
PHP:
<?php
$csv_array = file('/home/account/mysite.com/www/csv_catalog/file.csv'); // считываем файл необходим для разделения

$strings_in_file = 2000; //указываем количество строк для разделения
$string_counter = 0;
$file_counter = 1;
for($i=0; $i<count($csv_array); $i++)
{
    //если счетчик разбива равен $strings_in_file закрываем старый файл и добавляем 1 к $file_counter
    if($string_counter == $strings_in_file)
        {
        $string_counter = 0; //обнуляем позицию строк после записи
        fclose($fp);
        unset($fp);
        $file_counter++;
    }
    //если файл для записи не открыт открываем его
    if(!$fp) $fp = fopen('/home/account/site.com/www/csv_catalog/file'.$file_counter.'.csv', 'w');
    //записываем строку и прибавляем к счетчику 1
    fputs($fp, $csv_array[$i]);
    $string_counter++;
}
if($fp) fclose($fp);
?>

Всем удачи!)
 
До сих пор не решено!
За CRON Спасибо!
Но мне в первую очередь нужна CRON команда, которая считывает product_sku и меняет product_price!
закажи разработку синхронизации вручную с эксель-прайсом
Кто может сделать такую разработку? Фриланс?
Ежедневное изменение цен, это ведь так актуально для Интернет Магазина.
И что никто не сталкивался с подобной проблемой? ... не поверю!
 
Последнее редактирование:
До сих пор не решено!
Но мне в первую очередь нужна CRON команда, которая считывает product_sku и меняет product_price!

Вот вам скрипт который обновляет цены по артикулу.
Просто формируете .csv файлик с новыми ценами и запускаете скрипт.

артикул|новая цена

PHP:
<?php

$start_time = microtime(true);

$handle = fopen("katalog/ceny.csv", "r");  // Измените katalog/ceny.csv на ваш Путь и Имя файла с артикулами и новыми ценами
/*
ВНИМАНИЕ! разделитель полей |

ПРИМЕР .CSV
артикул|новая цена

00001|12
00015|35
00034|52

*/
  $dblocation = "localhost";  //замените localhost на свой адрес сервера БД
  $dbname = "bdname";  // измените bdname на ваше Название БД
  $dbuser = "bduser";  // bduser замените на ваш Логин пользователя БД
  $dbpasswd = "bdpasswd";  // Пароль пользователя БД

  // ДАЛЬШЕ НЕ СТОИТ ЧТО НИБУТЬ МЕНЯТЬ !!!

 
  $dbcnx = mysql_connect($dblocation, $dbuser, $dbpasswd); 
  if (!$dbcnx) 
  { 
    echo "<p>К сожалению, не доступен сервер mySQL</p>"; 
    exit(); 
  } 
  if (!mysql_select_db($dbname,$dbcnx) ) 
  { 
    echo "<p>К сожалению, не доступна база данных</p>"; 
    exit(); 
  } 
mysql_query ("set character_set_client='utf8'"); 
mysql_query ("set character_set_results='utf8'"); 
mysql_query ("set collation_connection='utf8'");


while (($data = fgetcsv($handle, 0, "|")) !== FALSE) {

    $select = mysql_query("SELECT  `virtuemart_product_id` FROM  `st_virtuemart_products` WHERE  `product_sku` = '$data[0]' ");
  if(!$select) 
  { 
    echo '<p>Ошибка в запросе получения ID товара. Товар с артикулом $data[0] в магазине не обнаружен. Пожалуйста, сначала добавьте товар (или удалите его со списка csv файла), потом пытайтесь обновить для него цену. Работа програмы была прервана.</p> '; 
    exit(); 
  } 
 
  $product_id = mysql_result($select,0);
 
  $update = mysql_query("UPDATE `st_virtuemart_product_prices` SET `product_price` = '$data[1]' WHERE  `virtuemart_product_id` ='$product_id'");
  if(!$update) 
  { 
    echo '<p>Ошибка в обновлении цены для товара с артикулом $data[0] </p>'; 
    exit(); 
  } 
}

echo 'О, чудо. Всё прошло успешно!';
 
$exec_time = microtime(true) - $start_time;// выполнение действий
echo '<p>время исполнения'.$exec_time.'</p>';

?>

в комментариях описал которые поля нужно скорректировать.

Передавать что нибудь крону нет смысла, так как вы всё равно будете вручную формировать свежий .csv
 
Для просмотра ссылки Войди или Зарегистрируйся Спасибо!
Ребят возник еще вопрос по CSV Improved.
Как правильно подгрузить характеристики к существующим товарам!
Пр: 00001|Монитор| 20 у.е|----характеристики (догрузить)

Вот так будет работать? Какие настройки нужны для CSV Improved?
product_sku|product_desc
 
Последнее редактирование:
Назад
Сверху