Экспорт выгружает каталог в файл: резервная копия, передача данных, таблица для правки в Excel, фид для площадок. Компонент ставится вместе с пакетом; раздел — Dharma Shop → Экспорт. Импорт каталога доступен отдельно в разделе Dharma Shop → Импорт; описание форматов и безопасного применения — в статье «Импорт каталога». Экспорт сам по себе каталог не меняет.
Как это устроено
- Профиль — сохранённая настройка выгрузки: что выгружать, в каком формате, какие колонки, какие записи отбирать, где лежит файл. Профилей может быть сколько угодно: «Прайс-лист», «Остатки для склада», «Фид для Яндекс Маркета».
- Запуск — одно выполнение профиля. Настройки профиля сохраняются в запуске снимком, поэтому правка профиля во время выгрузки её не ломает, а история показывает, как всё было на самом деле.
- Выгрузка идёт порциями, большой каталог не загружается в память целиком; на 100 000 товаров CSV собирается за секунды. Если запуск оборвался, его можно продолжить с того места, где он остановился.
Форматы
| Формат | Для чего |
|---|---|
| CSV | Универсальный текстовый файл (UTF-8). Разделитель колонок ;, , или табуляция; «UTF-8 BOM для Excel» — да, если файл открывают двойным щелчком в Excel. |
| Excel (XLSX) | Готовая таблица. Настройки: имя листа, закрепление строки заголовков, автофильтр. Лимит Excel — 1 048 576 строк и 32 767 знаков в ячейке; для большего используйте CSV. |
| Яндекс YML | Фид товарных предложений для площадок (только товары). Колонки не выбираются, соответствие тегов задаётся отдельно (ниже). Файл фида всегда публичный: после каждой выгрузки он обновляется по постоянной ссылке, которую показывает список профилей. |
XLSX и YML — плагины группы dharmashopexport; если плагин отключён, формат исчезает из списка. Другие форматы подключаются такими же плагинами (см. «Руководство разработчика»).
Создать профиль
Откройте Dharma Shop → Экспорт → Создать. Форма состоит из четырёх вкладок.
- Профиль экспорта — название, состояние (выключенный профиль нельзя запустить), что выгружать и формат. Настройки выбранного формата появляются под полем «Формат».
Что выгружать: товары, категории, бренды / производители, бейджи, группы товаров, определения полей, группы полей.
- Отбор записей — что именно выгружать, чтобы не выгружать весь каталог. Пустой выбор — всё. Условия действуют вместе (запись должна подойти под каждое заполненное), а внутри одного списка достаточно любого значения; вложенные категории и бренды входят в выбранные.
- состояние записей (опубликованные, неопубликованные, все не удалённые);
- для товаров и групп товаров: категории, бренды / производители, бейджи и «только в наличии». Например, «категории Смартфоны и Наушники + бренд Pixel» выгрузит только подходящие товары;
- для категорий и брендов: «Только эти категории с вложенными» и «Только эти бренды с вложенными» — выгружается выбранная ветка дерева целиком.
- Колонки — таблица «поле — заголовок — представление». В списке «Экспортируемое поле» есть поиск: начните вводить название. Пустой список выгружает стандартный набор (ID, название, алиас, артикул, категория, бренд, цена, остаток, группа, обложка). Строка без выбранного поля игнорируется. Представление значения: исходное, обычный текст без HTML, «Да / Нет», «Пусто вместо нуля». Порядок колонок меняется перетаскиванием.
- Файл и доступ — имя файла (латиница, цифры, дефис и подчёркивание; расширение добавится само), доступ к файлу, адрес магазина, ссылки на товары в виде ЧПУ и разделитель нескольких значений в одной ячейке (по умолчанию
|).
Для товаров доступны колонки: ID, название, алиас, состояние, артикул, основная и дополнительные категории (название, алиас, путь, ID), бренд, бейджи, описания, обложка и галерея (ссылки на оригиналы), цена со скидкой (текущая), цена без скидки (базовая), скидка (сумма или %), размер скидки сейчас, начало и конец скидки (UTC), остаток, наличие, «доступен на витрине», ссылка на карточку, группа, единицы, вес и габариты, мета-теги и значения полей: для каждого поля три колонки — значение, алиас варианта и ID варианта.
Список профилей: запуск, файл, планировщик
В списке Dharma Shop → Экспорт у каждого профиля есть колонки:
- Запуск — кнопка «Запустить». Открывается окно с прогрессом (то же окно, что у пакетной обработки и команд магазина): число обработанных записей, полоса прогресса, «Записано / пропущено». По окончании в окне — результат и замечания с ID первых записей. Для YML товары без цены, описания, изображения и других обязательных значений пропускаются; неподходящая старая цена не попадает в offer, а показывается как замечание. Есть кнопка «Скачать файл» и, для публичного профиля, ссылка для площадки. Если запуск был прерван (ошибка, закрытая вкладка), кнопка называется «Продолжить»: выгрузка продолжится с места остановки, записанные порции не пересчитываются и не дублируются. Пока идёт выгрузка, окно закрыть нельзя; если вкладку всё же закрыли, откройте список и нажмите «Продолжить».
- Последний файл — кнопка «Скачать» (последний успешный запуск) с датой и размером. У публичного профиля (например, YML для Яндекса) ниже показана прямая ссылка — её копируют в кабинет площадки; ссылка постоянна и всегда отдаёт свежий файл.
- Планировщик — кнопка «В планировщик» открывает в новой вкладке форму новой задачи Joomla с уже выбранным типом «Dharma Shop: экспорт по расписанию», этим профилем и названием; остаётся задать интервал и сохранить.
Кнопка «История выгрузок» в панели списка открывает журнал запусков.
В форме профиля кнопка «Сохранить и запустить» сохраняет настройки и открывает страницу запуска с прогрессом (она обновляется сама, пока идёт выгрузка).
История выгрузок
Журнал показывает все запуски: профиль, состояние, время (UTC), число записей и размер файла. Номер запуска открывает его страницу (результат, причины пропусков, скачивание, «Продолжить» и «Отмена»).
- Удалить — отметьте запуски галочками и нажмите «Удалить»: запись и файлы запуска удаляются. Запуск, который выполняется прямо сейчас, не удаляется.
- Очистить историю — удаляет все завершённые и отменённые запуски с файлами; выполняющиеся и прерванные (их ещё можно продолжить) остаются.
- Публичные ссылки фидов при удалении истории не меняются: файл по постоянной ссылке остаётся, пока профиль не выгрузят заново.
- Удаление требует права «Удаление» и права «Видеть историю выгрузок» (см. «Права»).
- Старые файлы профиля удаляются и сами по правилу хранения (по умолчанию 10 последних на профиль).
Запустить и скачать на странице запуска
Страница запуска (номер запуска в истории) показывает те же сведения без окна: прогресс, итоги, предупреждения, SHA-256 файла и кнопки «Скачать файл», «Продолжить после ошибки», «Отмена», «Выгрузить заново». Пока у профиля есть незавершённый запуск, повторное нажатие «Запустить» продолжает тот же запуск. Время на странице — UTC.
Где лежат файлы и кто их видит
Папка выгрузок задаётся в Настройки магазина → Экспорт / импорт (по умолчанию files/export в корне сайта; создаётся сама).
- Закрытые файлы (и рабочие части) лежат в подпапке
private. Они записываются как PHP-контейнеры, которые отвечают 404 на любой прямой адрес, плюс стоит запрет в.htaccess; получить такой файл можно только кнопкой в админке с проверкой токена и прав. Список файлов папки не открывается. - Публичный профиль (поле «Доступ к файлу»; у формата YML профиль публичный всегда) после каждой успешной выгрузки обновляет файл по постоянной ссылке
адрес-магазина/папка/имя-ID.расширение— напримерhttps://shop.example/files/export/yandex-3.yml. Так работают фиды площадок: ссылка не меняется, содержимое всегда свежее. Публичный профиль выгружайте только если данные можно показывать любому. - Хранится заданное число последних файлов каждого профиля («Сохранять последних файлов на профиль», по умолчанию 10); более старые удаляются после успешной выгрузки, записи в истории остаются.
- Размер порции (по умолчанию 200 записей) и время одного шага (по умолчанию 5 с) настраиваются там же.
Защита от внедрения формул
Значение ячейки, которое начинается с =, +, - или @ (возможно, после пробела или табуляции), в CSV и XLSX получает в начале апостроф, чтобы Excel не выполнил его как формулу. Обычные отрицательные числа (-5) апостроф не получают. При последующем импорте ведущий апостроф нужно будет отбрасывать.
Яндекс YML
Настройки появляются при выборе формата Яндекс YML. Здесь «предложение» (offer) — одна товарная позиция фида. В таблице соответствия слева стоит тег предложения (в скобках), справа выбирается поле каталога, из которого берётся его значение: например «Название предложения (name)» — заголовок товара, который увидит площадка (по умолчанию «Название»), «Текущая цена (price)» — цена со скидкой, «Цена до скидки (oldprice)» — цена без скидки. Задайте название магазина и компании (по умолчанию из настроек магазина), соответствие тегов полям каталога (название, цена, цена до скидки, бренд, артикул производителя, ссылка, изображения, описание, наличие) и характеристики param: в таблице «Характеристики param» выбираются только характеристики товара (списки, флажки, цвет, число, диапазон, короткий текст), для каждой можно задать заголовок и единицу измерения. Для Яндекс Товаров цена до скидки выгружается только если это целое значение и скидка составляет от 5 до 75%; в остальных случаях offer остаётся в фиде без oldprice, а в запуске появляется замечание. Offer без описания пропускается.
- В фид попадают только товары, доступные гостю; цены передаются в валюте магазина без конвертации.
- Карточка без названия, цены, опубликованной категории, полной ссылки или изображения в фид не попадает; причины и ID первых записей видны на странице запуска. Включите «Остановить при неполном предложении», если фид должен быть строго полным.
- «Передавать group_id» объединяет предложения группы товаров в Яндекс Маркете.
Выгрузка по расписанию
Проще всего нажать «В планировщик» в списке профилей. Вручную: Система → Планировщик задач, задача типа «Dharma Shop: экспорт по расписанию», выберите профиль и интервал. Каждое срабатывание продолжает незавершённый запуск, повторяет прерванный по ошибке или начинает новый. В консольном запуске планировщика (cron) ссылки на товары строятся без ЧПУ; если фиду нужны адреса как на витрине, запускайте планировщик Joomla через «ленивое планирование» или веб-cron.
Запуск из CLI
В составе пакета есть команда Joomla CLI. На сервере перейдите в корень сайта и укажите ID профиля из списка Dharma Shop → Экспорт:
php cli/joomla.php dharmashop:export 4
Команда начинает новый запуск или продолжает незавершённый запуск этого профиля. По завершении показывает количество записанных и пропущенных записей; если профиль публичный, также выводит ссылку на фид. Код завершения 0 означает успех, 1 — ошибку экспорта, 2 — неверный ID или профиль занят другим процессом. Справка по команде:
php cli/joomla.php help dharmashop:export
Чтобы сразу получить обычный файл в указанную папку сервера, передайте абсолютный путь. Папка должна существовать и быть доступна пользователю, от которого запущен PHP:
php cli/joomla.php dharmashop:export 4 --output=/srv/exports/catalog.csv
Расширение укажите в соответствии с форматом профиля (.csv, .xlsx или .yml). Команда безопасно записывает временный файл рядом с назначением и затем заменяет им итоговый. Без --output результат остаётся в хранилище экспорта, а закрытый файл можно скачать из истории в админке. Команду можно вызывать из cron; для надёжного расписания, автоматического продолжения после прерывания и обычных ссылок ЧПУ используйте Joomla Scheduler.
Пример для cron (каждую ночь в 3:00, результат — в папку, откуда его забирает другая система):
0 3 * * * cd /var/www/shop && php cli/joomla.php dharmashop:export 4 --output=/srv/exports/catalog.csv
В консольном запуске ссылки на товары в файле строятся без ЧПУ (маршрутизатор сайта недоступен); если файлу нужны адреса как на витрине, запускайте выгрузку задачей планировщика Joomla или кнопкой в админке. Команда есть, пока включён плагин «Консоль: экспорт Dharma Shop» (группа console, включается при установке).
Права
В Dharma Shop → Экспорт → Параметры → Права (или кнопка «Параметры» в списке профилей):
| Действие | Что разрешает |
|---|---|
| Доступ к компоненту | Видеть раздел и список профилей |
| Создание, изменение, удаление | Правка профилей; удаление запусков в истории |
| Запускать экспорт | Запуск, продолжение, отмена, скачивание своих файлов |
| Видеть историю выгрузок | Общая история всех сотрудников, скачивание чужих файлов, удаление и очистка истории (вместе с правом «Удаление») |
Сотрудник без права запуска может открыть список профилей, но не запустит выгрузку и не скачает файл; кнопки запуска, скачивания и «В планировщик» (она требует права создавать задачи планировщика) ему не показываются. Отдельное право на запуск нужно потому, что в файле лежат цены, остатки и внутренние данные магазина.
Если что-то не получилось
- «Не удалось записать файл экспорта» — нет места или прав на папку; проверьте папку из настроек.
- «Процесс занят» — шаг выполняется прямо сейчас (в другой вкладке или планировщиком); подождите минуту.
- Формат XLSX не выбирается — включён ли плагин «Экспорт: Excel (XLSX)» и есть ли расширение PHP ZipArchive.
- Ошибка при сохранении формы — откройте вкладки и найдите поле с красной рамкой; чаще всего пустое название или адрес магазина.
- Подробности сбоя пишутся в журнал
com_dharmashop_export.log.php(папка журналов Joomla).