Подробная инструкция по работе с плагином «Total Import PRO» в OpenCart. Часть 2
После того, как в предыдущем посте мы с вами настроили наши профили для импорта, в будущем вы можете использовать их.
Вам не нужно проделывать всю работу вновь, а хватит лишь выбрать необходимый профиль и загрузить.
После чего, если это необходимо – вносите какие-то корректировки, если нет – то сразу переходите к «Step 5» и без ввода имени профиля нажимаете «Import».
Импортировать нужно сначала первый созданный профиль (если вы забыли, это делается для скачки изображений), а затем – второй.
Помимо этого, всю работу можно автоматизировать, а как именно, я сейчас расскажу.
Настройка автоматического импорта в «Total Import PRO»
В качестве инструмента для автоматизации работы мы будем использовать «Cron» – планировщик заданий.
Все, что вам нужно сделать, – это вызвать скрипт по адресу:
https://yoursite.ru/admin/cron_index.php import_1
Где «import_1» – это название созданного вами профиля, а «yoursite.ru» - домен вашего сайта. Таких задач должно быть две – с первым и вторым профилем.
Единственный момент – это делайте разницу по времени хотя бы 4–5 минут, чтобы импорт по первому профилю успел завершиться.
На примере хостинга Beget настройка одной задачи (задачи по одному профилю) выглядит так:
В остальных хостингах это настраивается по аналогии.
Импорт категорий в «Total Import PRO»
Все прайсы разные, как и их структура. Некоторые поставщики объединяют категории в одном теге, например:
<cat>Музыка > Rock > Electropunk</cat>
А кто-то разделяет их, например:
<cat_list>
<cat id="3">
<name>Категория</name><value>Музыка</value>
</cat>
<cat id="6">
<name>Категория</name><value>Rock</value>
</cat>
<cat id="12">
<name>Категория</name><value>Electropunk</value>
</cat>
</cat_list>
Поэтому разберем варианты, как обработать такие категории.
Начнем с первого варианта.
Когда вы настраиваете плагин, то на втором шаге (Step 2) есть поле под названием «Category Delimiter» – разделители категории:
Поскольку все категории разделены у нас символом « > » (здесь очень важно учесть, что пробел – тоже часть разделителя), то этот участок мы и вписываем в соответствующее поле.
А дальше в настройке импорта товара (Step 4, вкладка «Links»), вы просто выбираете тот блок, где у вас находятся эти категории.
Со вторым уже куда сложнее, и это из-за того, что категории имеют одинаковые теги.
Модуль информацию из таких тегов объединяет и разделяет символом «^». Поэтому решение задачи я нашел следующее: обработать прайс своим скриптом и создать уникальные теги на основе их ID.
Ниже я приведу пример PHP-скрипта. Опять же, в каждом отдельном случае нужна его доработка под свой вариант. Главное здесь – это понять основную идею.
header('Content-Type: text/html; charset=windows-1251');
$price = file_get_contents('https://www.pandoge.com/price-list.xml'); // Адрес до исходного прайса
$pattern = '|<cats+id=["'](d+)["']>s*<name>(.*?)</name>s*<value>(.*?)</value></cat>|i';
$price = preg_replace_callback(
$pattern,
function ($match) {
return '<cat id="'.$match[1].'"><name'.$match[1].'>'.$match[2].'</name'.$match[1].'><value'.$match[1].'>'.$match[3].'</value'.$match[1].'></cat>';
},
$price
);
file_put_contents('new-price-list.xml', $prise); // Файл с новым (обработанным) прайсом
На выходе, если сравнивать код с представленным выше вариантом, мы получаем уже уникальные теги:
<cat_list>
<cat id="3">
<name3>Категория</name3><value3>Музыка</value3>
</cat>
<cat id="6">
<name6>Категория</name6><value6>Rock</value6>
</cat>
<cat id="12">
<name12>Категория</name12><value12>Electropunk</value12>
</cat>
</cat_list>
Далее в настройках импорта категорий выбираете каждое поле как категорию.
Пример:
Вот, собственно, и все. Для кого-то может показаться этой информации недостаточно, но мне вполне хватило ее для того, чтобы настроить автоматический и полностью корректный импорт товаров.
Если вдруг вы столкнулись с какими-то трудностями или не все нюансы вам понятны – пишите в комментариях, постараюсь вам помочь.