Импорт из CSV
Bezumkin иногда удаляет свои же страницы с сайта или переносит куда-то, что поисковики их не находят, а в них содержится бесценная информация.
Одна из таких - это описание работы скрипта импорта в miniShop2 из CSV
Особенности:
- Это не сниппет, это самодостаточный скрипт.
- Использует процессоры для импорта ресурсов и изображений.
- Умеет обновлять ресурсы по указанному ключевому полю.
- Поддерживает ТВ параметры и поля товаров, включая JSON типа size и color.
- Есть режим отладки, с подробным логом и обработкой только первой строки файла.
- Выводит сообщения через системный лог.
Теретически, можно импортировать не только товары, но и категории или другие ресурсы, но не проверял.
Скрипт входит в состав miniShop2 с версии 2.1.4 и лежит в /core/components/minishop2/import/csv.php. Запускать его можно как из браузера (если у вас открыта директория core), так и из консоли.
Если захотите его перенести в другое, более подходящее место, то нужно отредактировать строку
require_once dirname(dirname(dirname(dirname(__FILE__)))) . '/config/config.inc.php';
и указать другой путь для получения config.inc.php.
Если вы запускаете скрипт из core, и вообще, если у вас открыта core всем гостям — то вы сам себе злобный буратина. Это небесопасно, я вас предупредил!
Параметры
Параметры можно указывать двумя путями: через командную строку и через массивы $_GET или $_POST
- file — путь к импортируемому файлу, от корня сайта. Например «core/import/file.csv»
- fields — строка с полями импортируемого файла.
Здесь нужно перечислить имена, как они идут в файле. Например: «alias,article,pagetitle,price,image,discount».
В параметре и файле можно использовать не только поля ресурса, но и:
- Массивы свойств товара: «size,size,size,color,color»
- Изображения для галереи: «gallery,gallery,gallery» путь к картинке на сервере, которые загрузили ранее;
- ТВ параметры (слово «tv» + id параметра): «tv1,tv2,tv3»
- update — указывает, нужно ли обновлять ресурсы. Значения 1 или 0.
- key — если включено обновление, обязательно нужно указать ключ товара, по которому определяется его уникальность. Например «article».
- debug — Режим отладки. Если = 1, то скрипт подробно обрабатывает первую строку файла и выходит.
- delimeter — Разделитель колонок в csv файле, по умолчанию ";".
Если вы загружаете изображения в галерею, я рекомендую указать товарам id медиа источника source, чтобы не получить кучу картинок в корне сайта.
Примеры
Импорт через консоль:
php ./core/components/minishop2/import/csv.php "file.csv" "article,pagetitle,tv1,size,size,gallery,gallery,tv3" 1 "article" 1 "|"
Импорт через браузер
http://mysite.com/core/components/minishop2/import/csv.php?file=file.csv&fields=article,pagetitle,tv1,size,size,gallery,gallery,tv3&update=1&key=article&debug=1&delimeter=|
В конце работы скрипт выведет статистику и ошибки, если есть.
Касательно TV полей, если id доп полей больше 9, то надо поправить 49 строку в csv.php
if (preg_match('/^tv(\d)$/', $v))
добавить плюсик возле «d»
if (preg_match('/^tv(\d+)$/', $v))
Иначе скрипт не увидит доп поля и не даст разрешение на их сохранение.
Комментарии ()