CSV
Загрузка базы через .CSV позволяет пакетно менять или загружать с нуля товарную базу.
Cделайте резервную копию базы, чтобы вернуть все обратно, если результат не устроит: База - Резервное копирование +. Затем очистите тестовую базу База → SQL запрос к базе → ➕ Команда - Очистить базу. Магазин готов к работе:

⤵️Импорт данных

Заходим в меню База - Импорт данных и выбираем нужные параметры импорта в Настройках:
Настройки импорта

Настройки

Файл - выбираем файл на компьютере, или указываем URL поставщика; В Примерах 👉 мы подробно описали варианты получения файла: на основе родного файла или от поставщика.
Действие - создание или обновление;
CSV-разделитель - обычно, точка с запятой;
Разделитель для характеристик - колонка, #, @, $
Пример с разным разделителем Характеристик
Разделитель значений характеристик - ; / \ - &
Пример с разным разделителем Значений характеристик
Полный путь для изображений - нужен, если в файле указано только название картинки, без пути. Тогда можно загрузить все фото в папку UsersFiles/Images и включить эту опцию. Фото сразу привяжутся к товарам.
Фото с полным url не будут автоматически загружены на ваш сервер, но будут выводиться на витрине браузером прямо со стороннего сайта. Для физической массовой загрузки фото на ваш сервер используйте PriceLoader. Преимущество утилиты в том, что она не нагружает ваш сайт загрузкой фотографий.
Полный URL
Обработка изображений - при включенной опции, все, что выставлено в меню Настройки - Изображения - Основные, будет применено к фото, если они лежат на вашем сервере. Это удобно для нарезки превью фото, не нужно создавать разные размеры, достаточно указать размер Тумбнейла и включить эту опцию, превью для товара будет создано автоматически.
Разделитель для изображений – если в Прайс-листе несколько фото к 1 товару, выберите, чем они разделены в файле CSV и поставьте соответствующую настройку.
Кодировка текста - если кодировка выбрана неверно, ваши данные загрузятся в нечитаемых символах. Для файла в облаке выбирайте UTF-8. В остальных случаях, обычно используется ANSI (Windows 1251).
Ключ обновления - нужен для обновления товаров. По умолчанию для обновления данных используются колонки Id или Артикул, но можно использовать любое другое поле, например Наименование.
Проверка уникальности – если включена опция проверка уникальности и выбрано действие Создание, то перед созданием новых данных проверяется наличие данных в базе во избежании дублирования информации (проверяется артикул).
После всех настроек, если столбцы в вашей прайс-листе имеют штатный названия, можно просто нажать Выполнить. Если столбцы отличаются, идем в закладку Соответствия полей. Нужно указать только те поля, которые мы хотим загрузить, остальные не заполняем:

Вкладка Соответствия полей

Если в вашем прайс-листе есть характеристики, то нужно завести а базе магазина хотя бы 1 каталог. Заводим его вручную, затем в нашем Прайс-листе заводим колонку Каталог и проставляем везде 1 (ID каталога).
ID каталога можно увидеть в квадратных скобках рядом с названием каталога: "Каталог: Бытовая техника [ID 2]" - номер внесите в столбец Каталог. Для задания полного пути каталога используйте поле Путь каталога и укажите в нем полный путь формата "Каталог/Подкаталог1/Подкаталог2". При указании пути каталога, все отсутствующие каталоги будут созданы автоматически в соответствии с их путем и именем.
Проставляем остальные, только нужные нам колонки.
Если в прайс-листе характеристики идут как колонки, то в сопоставлении нужно выбрать поле с собачкой: @Характеристика, если характеристик несколько - также указываем просто - @Характеристика. Если есть id каталога, Характеристики создадутся и привяжутся сами при импорте.

Сохраненные настройки

После проставления полей, можно зайти во вкладку Сохраненные настройки и сохранить данный импорт на будущее. Они могут быть использованы в модуле Задачи для автоматической загрузки или выгрузки данных по расписанию.

Автоматизация

Нужна для загрузки больших CSV файлов, без необходимости делить файл на части.
Для запуска загрузки, укажите параметры лимита строк и временной интервал, включите опцию Умная загрузка. Окно браузера закрывать не нужно, чтобы не прервать загрузку файла по временному интервалу. Лимиты строк на каждом хостинге и тарифе свои, но более 3000 строк ставить не рекомендуется, если только у вас не выделенный сервера или VPS.

Кнопка ⬇Выполнить

Нажимаем кнопку Выполнить - в правом верхнем углу. Ждем сообщения о загрузке.

Пример Загрузки прайс-листа поставщика

Например, поставщик дал вам файл в екселе - price-list-Romashka.xlsx. Расширение .xlsx нужно перевести в .csv - для этого откройте файл в Exсel, Файл - Экспортировать - .csv и сохраните файл. Получится такой файл - price-list-Romashka.csv. Прайс-лист можно выложить в облако и обновлять цены по расписанию. Для этого создайте документ в Google Sheets, скопируйте содержимое и сохраните. Не забудьте опубликовать файл:
Допустим, мы сделали резервную копию, почистили базу, и загружаем товары с нуля. Вот наш Прайс-лист:
Пример прайс-листа в облачном файле Google Таблиц
Заходим в меню База - Импорт данных и выбираем нужные параметры импорта в Настройках:
Настройки
Файл - выбираем файл на компьютере, или указываем URL поставщика;
Действие - создание;
CSV-разделитель - точка с запятой;
Разделитель для характеристик - Колонка;
Разделитель значений хар-к - в нашем примере это точка с запятой;
Полный путь для изображений - нужен, если в файле указано только название картинки, без пути. Тогда можно загрузить все фото в папку UsersFiles/Images и включить эту опцию. Фото сразу привяжутся к товарам. В нашем прайс-листе указан полный путь к фото на сервере поставщика: https://divbaby.ru/image/cache/catalog/export/Bamper_v_detskuyu_krovatku_Mozayka000000348_100x800.jpg;https://divbaby.ru/image/cache/catalog/export//product/Bamper_v_detskuyu_krovatku_Mozayka000000348_2-800x800.jpg – значит, опцию мы не включаем, нам не нужно к этому пути добавлять еще /UsersFiles/Images.
Обработка изображений - при включенной опции, все, что выставлено в меню Настройки - Изображения - Основные, будет применено к уже загруженным фото. Это удобно для нарезки превью фото, не нужно создавать разные размеры, достаточно указать размер Тумбнейла и включить эту опцию, превью для товара будет создано автоматически. В нашем случае указан полный путь изображений, фото нет физически на сервере, значит, они не могут быть обработаны, опцию ставим Выкл. Чтобы получить превью из фото, после импорта выполним команду в меню База - SQL запрос к базе:
1
update phpshop_products set pic_small=pic_big
Copied!
Разделитель для изображений – в нашем примере это Точка с запятой.
Кодировка текста - поскольку наш файл загружен в облако, выбираем UTF-8.
Ключ обновления - т.к. мы загружаем с нуля, ключ нам не нужен.
Проверка уникальности – опция нам не нужна.

Вкладка Соответствия полей

Далее идем в закладку Соответствия полей. Смотрим, что нам нужно для импорта в магазин. Решаем, что нам нужен Артикул, Заголовок, Цена, Цена поставщика, Описание, Изображение, Размер, Цвет. Для корректной загрузки Характеристик, нужен хотя бы 1 каталог в базе. Заводим его вручную, затем в нашем Прайс-листе заводим колонку Каталог и проставляем везде 1 (ID каталога). В нашем примере это первая колонка. Проставляем остальные, только нужные нам колонки.
В нашем прайс-листе характеристики идут как колонки, значит выбираем @Характеристика для Колонки S и для Колонки R.

Вкладка Сохраненные настройки + настройка автообновления цен

Мы хотим по расписанию обновлять цены из данного файла. Заходим во вкладку Сохраненные настройки и вводим название. Настраиваем расписание: включаем модуль Задачи, создаем новую Задачу и в меню Выбрать - видим сохраненный импорт, указываем его и количество запусков в день.

Автоматизация

Нужно загрузки больших CSV файлов, без необходимости делить файл на части.
Для запуска загрузки, укажите параметры лимита строк и временной интервал, включите опцию Умная загрузка. Окно браузера закрывать не нужно, чтобы не прервать загрузку файла по временному интервалу. Лимиты строк на каждом хостинге и тарифе свои, но более 3000 строк ставить не рекомендуется, если только у вас не выделенный сервера или VPS.

Кнопка ⬇Выполнить

Нажимаем кнопку Выполнить - в правом верхнем углу. Ждем сообщения о загрузке.
Теперь можно проверить импорт - меню Товары - Товары - Каталог1, в него сразу попали товары из нашего Прайс-листа, с привязанными характеристиками. 🎉
Если не создавать каталог, а грузить товары в магазин без каталога, все товары попадут в папку Неопределенные товары - Загруженные CSV. В этом случае, характеристики грузится не будут.

Пример загрузки на основе "родного" экспортного файла

Принцип работы: сначала выгружаем .csv файл со структурой базы через Экспорт данных, добавляем свои товары и загружаем файл обратно через Импорт данных.
Скачайте 💾Образец файла выгрузки товара с характеристиками. Вы можете создать свой файл, выбрав нужные колонки 👇

1. Создаем структуру каталогов и по одному товару в каждом каталоге

Создаем вручную каталоги, подкаталоги, и хотя бы 1 товар в каждом подкаталоге. Если будем заполнять в файле характеристики, то заводим их тоже вручную. Все значения характеристик (например, белый, красный, ..., или размер - 110, 122, ...) заранее создавать не нужно, они автоматически создадутся при загрузке.
Можно не создавать каталоги, товары попадут в папку Неопределенные товары - Загруженные CSV.В этом случае, характеристики грузится не будут.
Затем выделите флажком товары, либо нажмите "Отметить все" и перенесите в уже созданный каталог опцией ⚙️▾ - Редактировать выбранные:

2. В экспорте данных выбираем, что нужно выгрузить

После создания структуры, идем в раздел База - Экспорт данных, и указываем параметры выгрузки. См. раздел Экспорт данных ниже 👇.

3. Заполняем .csv файл своими данными

Скачиваем файл из Экспорта данных. Открываем скачанный файл: мы видим колонки, которые воспринимает PHPShop на основе их заголовков - заголовки редактировать нельзя. Заполните строки по столбцам.
Управляющим полем при загрузке базы является - Код ID или Артикул, по нему при загрузке идет поиск товара и обновление данных. Если в импорте выбрана опция Действие - Создание, то создается новый товар с ID, равным ID последнего добавленного товара, увеличенный на единицу.

Пример загрузки подтипов товаров

Подтипы - это вариации товаров с разными ценами/фото/складом. Если нужно иметь в карточке товара модификации Зеленый, Желтый с единой ценой и без привязки к 1С/Мойсклад - то используйте Опции.
Для пакетной загрузки Подтипов, Нужно в меню База - Экспорт базы выбрать нужные колонки и скачать пример csv файла. Затем добавить свои строки, не трогая колонки файла и загрузить через меню База - Импорт базы:
2. Откройте файл, вы видите колонки:
  • Подтип - показывает, это товар-подтип или нет:
0 – не подтип (главный товар)
1 – подтип
  • Подчиненные товары. Если в колонке Подтип 0, значит это Главный товар, тогда, если в нем есть подтипы, их ID нужно написать через запятую, если это отдельный товар без подтипов, ничего не указываем. Сюда же вносим значения вариантов подтипов. Варианты могут быть какие угодно. Значения этого подтипа всегда будут в этой колонке:
Если вы изменяете подтипы пакетно через "Импорт/Экспорт", нужно указывать уникальный артикул подтипа, по аналогии с основным товаром.
При синхронизации с 1С, полное название товара и подсказка выгружаются в одноименные поля автоматически.

⤴️Экспорт данных

Экспортируемые поля не забудьте выделить - они будут отмечены фоном, иначе они не выгрузятся в файл.
Выберите поля, которые будут выгружаться при:
Создании товаров
Обновлении товаров
Наименование, Цена 1, Описание, Характеристики, и добавьте поля, которые нужны именно вам.
Обязательно нужно либо поле id (товара), либо Артикул, + те поля, которые нужны именно вам.
CSV-разделитель: обычно это точка с запятой.
Разделитель для характеристик:
Если грузите характеристики, полеКаталог должно быть обязательно, иначе при загрузке характеристики не найдут свой "Набор характеристик".
Через общее поле #
В виде отдельных колонок
Выбираем в качестве разделителя для характеристик символ #.
В файле Характеристикибудут записаны в одну ячейку по каждому товару с разделителем / между названием и значением характеристики и разделителем # между самим характеристиками, если их несколько:Размер/44#Цвет/Бежевый.
Когда будете загружать файл обратно через Импорт данных, в качестве разделителя для характеристик не забудьте указать значение #. При этом, новые значения характеристик будут созданы автоматически и привязаны к указанному каталогу в колонке Каталог.
Колонка автоматически считается названием характеристики, если первым символом в ее имени стоит @, например @Бренд.
Выбираем в поле "Экспортируемые поля" поля Id,Каталог,Наименование и @Характеристика. ПолеКаталог должно быть обязательно, иначе при обратной загрузке характеристики не найдут свой "Набор характеристик". Выбираем в качестве разделителя для характеристик значение Колонка.
В выгруженном файле, в колонках с префиксом @Характеристика будут записаны все названия характеристик, а в соответствующих строках будут значения характеристики. Сколько у товара характеристик, столько и будет создано дополнительных колонок под каждую характеристику.
Соблюдая это правило заполнения поля, внесите свои правки и загрузите файл обратно через раздел Импорт данных. Выбор разделителя значения не имеет. При этом новые значения характеристик будут созданы автоматически и привязаны к указанному каталогу в колонке Каталог.
Характеристики в отдельные колонки выгружаются только для одного каталога, первого товара в списке, чтобы не создавать много колонок. Для других товаров из других каталогов, колонки с характеристиками созданы не будут. Поэтому, выгружайте товары по каждому каталогу раздельно. МенюТовары → Выбрать каталог → Выделить галочкой все товары → Экспортировать выбранные.
Полный путь изображений – опция нужна, если Экспорт данных используется для создания прайс-листа для клиентов, и в нем нужно указать полный путь к фото товаров (https://myphpshop.ru/UserFiles/Image/trial/primer-fotos.jpg). По умолчанию выгрузится путь /UserFiles/..
Разделитель для изображений – нужен, если у вас несколько фотографий к 1 товару.
GZIP сжатие – сжимает размер исходного экспорта, нужен для больших баз товаров.
Лимит строк – ограничение строк в 1 csv файле.
Закладка Сохраненные настройки нужна для того, чтобы не проделывать заново эту процедуру:
Теперь можно нажать кнопку Выполнить и получить готовый файл для последующего внесения новых товаров. ✨

Работа с изображениями при импорте-экспорте

Если вы хотите загрузить фото пакетно, нужно предварительно загрузить их на сервер, а в поле Большое изображение указать путь к фото от корня сайта: /UserFiles/... , если фото несколько, через запятую без пробела:
Большие картинки для карточки товара, предварительно подготовьте одного размера, желательно в одной пропорции. Загрузите фото на сервер в папку /UserFiles/Image, с помощью любого ftp-клиента (можно найти в Яндексе по слову "ftp-клиент").
Через Импорт нельзя удалить в товарах старые фото, скрипт только добавит к товарам новые картинки, которые вы укажете в csv файле. Если нужно удалить фото у всех товаров, для последующей перезагрузки через csv, в меню База -SQL запрос к базе введите команду:
1
TRUNCATE phpshop_foto;
2
update phpshop_products set pic_small="", pic_big="";
Copied!

Превью товаров

Часто в прайс-листе указаны фото только для карточки товара, а для превью в каталоге лучше использовать маленькое фото, для лучшей загрузки сайта. Для автоматического создания превью есть решения:
Если фото уже лежат на сервере
Если фото нет на сервере
Чтобы не нарезать отдельно фото для превью товара, в меню Импорт данных, просто включите опцию Обработка изображений. Ваши фото будут обработаны, уменьшены согласно настройкам в меню Настройки - Изображения.
Если в прайс-листе указан полный путь изображений, то фото не загрузятся физически на сервер (нужно использовать наш PriceLoader), поэтому, чтобы получить превью из фото, после импорта выполним команду в меню База - SQL запрос к базе:
1
update phpshop_products set pic_small=pic_big
Copied!
В зависимости от мощности сервера, загружайте одновременно не более 1000 - 3000 товаров. При большем количестве товаров, используйте вкладку Автозагрузка.

Загрузка через 1С

Для загрузки товаров через CSV из 1С, в настройках 1С-обработчика следует выбрать формат выгрузки для версии PHPShop. Если в .CSV файле из 1С не будет заполнено поле Каталог, то загруженные товары попадут в папку Неопределенные товары - Загруженные
Вы можете вручную добавить нужные колонки в csv файл. Описание главных полей товаров:
Поле
Формат
Описание
Длина символов
Id
Integer
ID товара
11
Подробное описание
Text
Подробное описание товара
-
Каталог
Integer
ID каталога товара
11
Наименование
Varchar
Наименование товара
255
Краткое описание
Text
Краткое описание товара
-
Яндекс.Маркет
Enum
Флаг включения товаров для вывода в YML файл. (0 - нет, 1 - да)
0 или 1
Вывод
Enum
Флаг включения товаров для вывода на сайте. (0 - нет, 1 - да)
0 или 1
Артикул
Varchar
Артикул товара
64
Спецпредложение
Enum
Флаг включения товаров в спецпредложение. (0 - нет, 1 - да)
0 или 1
Сопутствующие товары
Varchar
Перечисление ID товаров через запятую для совместной продажи
64
Приоритет
Integer
Приоритет вывода товара, сортировка.
11
Новинка
Enum
Флаг включения товаров в новинки. (0 - нет, 1 - да)
0 или 1
Заголовок
Varchar
Персональный титл (Titile) товара
255
Маленькое изображение
Varchar
Изображение привью для товара (адрес файла изображения)
255
Большое изображение
Varchar
Подробное изображение для товара (адрес файла изображения)
255
Вес
float
Вес товара в граммах
-
Дополнительные каталоги
Varchar
Перечисление ID каталогов через запятую для дополнительного вывода
255
Цена 1
float
Основная цена товара
-
Цена 2
float
Дополнительная цена товара
-
Валюта
Int
ID валюты
11
Единица измерения
Varchar
Наименование единицы измерения
255
SEO ссылка
Varchar
SEO ссылка товара (/id/*******.html)
255

Last modified 6d ago