Импорт csv в virtuemart - Simple CSV (часть 2)
Не так давно публиковал заметку о реализации импорта csv в virtuemart
Когда потребовалось повторить установку “мода” Simple CSV - пока читал форум, забыл зачем пошел. На десяти страницах форума слишком много “воды” и повторяющихся вопросов. Решил собрать краткий ман-faq по мод-хаку в одном месте. Может кому-нибудь окажется полезным.
Хак для версии virtuemart 1.0.*
Для более новых версий - см. CSVImproved http://joomlaforum.ru/index.php/topic,42648.msg407103.html#msg407103
http://joomlaforum.ru/index.php/topic,8340.msg87750.html#msg87750 - тут последняя (на дату написания поста) версия Simple CSV. Попутно стоит скачать примеры (на первой странице ветки), и учесть, что в файле параметров параметры надо называть не “Иглы;Размер иглы в СИ”, а просто “Размер иглы в СИ” - возможна ошибка при импорте. В секции товаров (!) в первой строке (заголовок) параметр должен называться “Иглы;Размер иглы в СИ”.
В файле ps_simple_csv_aliases.php соответствия между заголовками импортируемого файла и полями в базе. Дополнительные поля могут не загружаться, так как в базу пишет функция Virtuemart’a - подправлять следует её.
Модифицировал галочку “проверять товары” (при включенной галочке - все товары, отсутствующие в загрузке “распубликовываются”) - сделал распубликование всех товаров перед загрузкой - запрос из нескольких тысяч in (,,,) почему-то не срабатывал..
Импорт атрибутов
В ps_simple_csv_aliases.php строчки
‘Атрибут’ => ‘attribute’,
‘Атрибут определенный нами’ => custom_attribute’,
на самом деле должны быть
‘Атрибут’ => ‘product_advanced_attribute’,
‘Атрибут определенный нами’ => ‘product_custom_attribute’,
Теперь буду мучать картинки =)
А как залить товар в несколько категорий?
Указать путь к категориям через запятую, или точку с запятой или палку. Смотря какой у вас разделитель данных. Стоит быть внимательным - добавляйте категории без пробелов - возможно “дублирование”/создание “лишних” категорий.
Категории, содержащие запятую (точку с запятой или вертикальную черту) могут грузиться как несколько категорий. Для того, чтобы избежать подобного “разделения одной категории”, в строке ~805 файла ps_simple_csv.php следует убрать или закомментировать ненужный разделитель..
if( !is_array($paths) ) $paths = explode(’,', $paths);
Разделяем превьюшки и основные изображения по разным папкам: создаем нужный каталог (например resized) для и в csv пишем “resized/image1.jpg” и т.д.
Разные цены, в зависимости от количества товара:
А можно ли сделать чтобы отображалось 3 цены товара? При этом магазин у меня работает как каталог, т.е указать например, что при покупке 100 игл цена 600р, а при покупке 500 игл цена 580р, а при покупке 1000 игл цена 550р. Как это мне можно сделать думаю, что это можэно сделать через “Параметры товара”, я прав???
В версии 4 и ниже - если нужны именно цены, то сделать это можно через цены, а если просто для информаци, то через параметры можно. Через цены пока можно лишь разом загружать цены для разных групп, для возможности загружать цены и для разного количества товара - проверить в файле ps_simple_csv_aliases.php строку №123 заменить на:
'/Цена для группы "(.+?)"(?:(?:.*?)(\d+)(?:.*?)(\d+))?/' => 'product_prices|shopper_group_name|price_quantity_start|price_quantity_end',
Для версии бета-5 добавлена возможность добавлять “сложные цены” в следующем формате
Цена для группы “<название группы покупателей, сначала это обычно -default->”[[что угодно]<число от>[что угодно]<число до>]
Правильно: Цена для группы “-default-” количество от 3 до 7
Неправильно: Цена для группы “-default-” количество от 3
Правильно: Цена для группы “-default-” 3 - 7
Правильно: Цена для группы “-default-”, 3 7
Правильно: Цена для группы “-default-
Если до много - пишем что-то вроде 3-99999 - http://joomlaforum.ru/index.php/topic,8340.msg89584.html#msg89584 - тут с примером разбора.
При загрузке двух колонок (артикул, цена) - т.е. выгрузка используется только для обновления цен на сайте, следует подправить 883 строку файла на
if( $csv_data['manufacturer_id'] ) {
Fatal error: Allowed memory size of … bytes exhausted (tried to allocate … bytes) in - ошибка возникает при нехватке памяти скрипту. Следует уменьшать либо количество товаров в файле, либо по возможности убрать “лишнее” - описания, которые не меняются и подобное.
При длительной загрузке прайса, возможно, поможет
define( 'RG_EMULATION', 0 ); в файле globals.php
Несколько изображений в virtuemart - http://forum.virtuemart.net/index.php?topic=18473
Настройка разделителей по умолчанию - в product.simple_csv_upload.php
<input type="radio" name="csv_delimiter" checked="checked" value=";" />
Замеченные глюки с ценой:
- указание цены с пробелами;
- в меню “Информация о магазине” не выставлена валюта “валюта = рубль” - может повлиять на импорт цен;
- добавить в файл импорта поле product_currency с содержимым руб. (видимо, альтернатива предыдущему решению)
Сохраняем связанные товары http://joomlaforum.ru/index.php/topic,8340.msg170587.html#msg170587
// Присваиваем значения выборке из базы foreach( $csv_data as $key => $value ) { //if($db_data[$key]) $db_data[$key] = $value; $db_data[$key] = $value; }
/*##my Додаю для того, аби супутні товари не затирались. Старт ##200802281852*/ $q = "SELECT related_products FROM #__{vm}_product_relations "; $q .= " WHERE product_id='".$db_data['product_id']."'"; $db->query($q); if( $db->num_rows() ) {$db_data_related_products[] = $db->loadResult();} $db_data["related_products"]=$db_data_related_products; /* Кінець ##200802281852 */
Если у Вас возникли проблемы с установкой Simple CSV и вы их решили (или не решили) - отписывайтесь в комментариях или на форуме. При появлении новой информации пост по возможности (и желанию) буду обновлять.
Метки: cms, joomla, virtuemart, импорт
а пойдет для 1.1?
Чуть ниже версии, выделенной жирным написано про CSV Improved… (который для более новых - в том числе и для 1.1) Рекомендую смотреть в ту сторону.
ps. Если всё же будет реализация на 1.1 - просьба откомментировать…
Полезная статья, спасибо. Елси кому интересны ещё подробности, прыгайте сюды . А кто пользовался StoreUpdateBooster?
ivanesses.livejournal.com
{spam_detected}
Доброго времеени суток!
Это можно прикрутить к сайту ???
office-design.com.ua
office-design.com.ua
{spam_detected}
Доброго, @админ Прикручивайте..
Не уверен, что именно “это” - см. версию Virtuemart; Скорее всего, подойдет CSVImproved. Однако, в любом случае, импорт реализовать можно.
Удачи