Категории товара. Добавление
Пример добавления новых товаров в младшую категорию (Пример1).
В режиме добавления, поле "Номер(а) колонки(ок), содержащей категорию товара" не может оставаться пустым. Здесь должен находится, хотя бы один номер колонки прайс листа,
в которой находятся младшие категории товаров:
Колонка с младшими категориями не должна содержать пропусков, т.е. у каждого товара, в каждой строке прайс листа должна быть, каким-либо образом, обозначена младшая категория. Иначе, товар не загрузится, а плагин выдаст ошибку в Отчете, что он не знает, в какую младшую-главную категорию положить товар.
The Product has not been added: Row ~= 5 Category: '' not found in your settings (see page 'Category and margin')
Младшая категория в прайс листе может обозначаться любым текстом, т.к. мы не можем требовать от поставщика, чтобы он называл категории так, как нам удобно. С помощью вкладки "Категории и наценки" можно прописать соответствие категорий: поставщика и вашего магазина:
Если вы не хотите загружать в магазин какую-либо категорию товаров из прайс листа, то просто не прописывайте ее во вкладке "Категории и наценки".
Почему младшая категория называется Главной?
Аргумент 1.
Хотя бы потому, что если товар не показывается в младшей категории, а показывается в старшей, то младшую категорию незачем было и создавать. Можно было бы создать в магазине всего одну категорию "Товар" и все товары поместить в нее :)
Аргумент 2.
Кроме того, в некоторых магазинах, ссылки на товары формируются автоматически, включая название младшей категории:
http://site.com/odezda/palto/palto-women-carden-w12.html
по этой ссылке видно, что товар находится в младшей категории "Пальто".
Аргумент 3.
Мета-данные товара формируются плагином автоматически и используют название младшей категории товара, чтобы более точно описать товар. Сравните:
- "Покупайте наши пальто" или "Покупайте наши товары"
- "Покупайте наши микроскопы" или "Покупайте наши оптические приборы"
Пример добавления новых товаров в младшую и родительские категории (Пример2).
На рисунке видно, что для Главной категории "A" родительскими являются категории "B" и "C"
Чтобы показать товар в категориях "A" и "B":
Чтобы показать товар в категориях "A", "B" и "C":
Пример добавления товаров в произвольные категории (Пример3).
Сначала, нужно определить младшую-главную категорию для товаров. Пусть, главными категориями товаров будут категории из колонки №3 прайс листа. Эти категории следует перенаправить с помощью вкладки "Категории и наценки" ( см. "Пример1" ) и поставить номер 3 самым первым в поле "Категория":
Затем следует, через запятую, прописать номера колонок, содержащие названия дополнительных категорий, в которых нужно показать товар и включить "в заданных":
Внимание.
Названия дополнительных категорий в прайс листе должны в точности совпадать с категориями магазина. Поскольку дополнительные категории нельзя перенаправить.
Т.е. в магазине должна существовать категория "Бытовая электроника" ( см. Пример1 ).
Коллизия с одинаковыми названиями младших категорий.
Допустим, в прайс листе, категории представлены следующим образом:
В таком случае, во вкладке "Категории и наценки" возникнет коллизия:
В результате и духи и брюки попадут в одну категорию "Летняя одежда".
Задача решается сцеплением текстов из колонок 3 и 4:
(используется символ "точка").
Тогда во вкладке "Категории и наценки" следует прописывать сцепленные тексты:
Таким образом, получились искусственные названия младших категорий, которые оказались точнее.
См. здесь, как заполнить вкладку "Категории и наценки" полу-автоматически.
Категории товара. Парсинг
Категории на сайте-доноре, как правило имеют названия не совпадающие с названиями категорий вашего магазина. Поэтому, имеет смысл парсить только младшую категорию, которую можно поставить в соответствие с категорией магазина с помощью вкладки "Категории и наценки":
Но чтобы заполнить эту вкладку, нужно заранее знать, какие младшие категории будут спарсены с сайта-донора.
Пример парсинга младшей категории.
Допустим, на странице товара, "хлебные крошки" выглядят так:
Чтобы спарсить категорию "Розовые", можно использовать параметры: ">,</a и class="breadcrumb">,</ul>,<
Текст начала/конца парсинга: class="breadcrumb">,</ul> ограничивает область страницы, внутри которой плагин должен найти параметры парсинга: ">,</a
Но для того, чтобы плагин нашел последний фрагмент между "> и </a - "Розовый", а не первый - "Компьютеры", нужно в текст начала/конца парсинга добавить третий параметр "<" что означает парсинг назад.
class="breadcrumb">,</ul>,<
Есть ли смысл в парсинге категории? Решать вам.
Аргумент1.
Младшие категории сайта-донора придется вручную прописывать на вкладке "Категории и наценки". Автоматически это сделать невозможно.
Аргумент2.
Парсить можно только младшую категорию. Всю цепочку категорий спарсить не получается.
Аргумент3.
Затраты времени на ручное добавление колонки с категориями в прайс лист могут оказаться меньше, чем время заполнения вкладки "Категории и наценки" вручную.
Категории товара по ID
На главной странице плагина, в разделе "Общие кнопки" есть кнопка "Использовать ID категорий":
Если ее включить, то вкладку "Категории и наценки" можно не заполнять.
Но в прайс листе, в колонках категорий должны находится category_id вашего магазина:
Эти category_id видны в БД, в таблице category_description:
Настройки.
В поле "Категория" достаточно прописать номера этих колонок, и этого будет достаточно, чтобы товары распределились по категориям при добавлении товаров в магазин.
или
Однако, при таком способе загрузки есть один существенный недостаток. Все фото загруженных товаров попадут в одну папку - image/catalog/photo
Что может привести к замедлению работы сайта.
Так получается потому, что вкладка "Категории и наценки" осталась не заполнена категориями и папками для фото товаров:
и плагин не знает, куда закачивать фото товаров из этих категорий. По-умолчанию, используется предустановленная папка image/catalog/photo.
Почему нельзя скапливать много фото в одной папке.
Как это исправить.
В инструментах есть две функции:
В первом случае, плагин равномерно разделит все фото в папке photo на 10 под-папок, а во втором случае, каждую из этих под-папок разделит еще на 10 под-под-папок.
Таким образом, все фото будут разделены на 100 частей.
Остаток товара
Эта полоса в форме поставщика отвечает за количество (остаток) товара:
Поле "Количество".
Если в поле "Количество" прописать номер колонки прайс листа, содержащей, какое-либо число, то это число будет загружено, как количество товара.
Если в прайс листе, в указанной колонке 14 (см. пример выше) остаток товара отсутствует или будет равен 0, то плагин установит остаток по-умолчанию - 9 (см. пример выше).
Любой не цифровой текст воспринимается плагином, как 0.
Можно просуммировать остатки из разных колонок прайс листа:
(в качестве разделителя используйте запятую, пробелы не допускаются)
Интерпретатор.
Однако, в прайс листе могут встречаться и другие способы задания остатка. Например:
Все значения из колонки 14, кроме строки 6, будут интерпретированы как 0, если не использовать собственный интерпретатор:
Значения "Нет" и "Нет в наличии" не имеет смысла интерпретировать, поскольку это и так ноль.
Из рисунка видно, что числовые значения тоже можно интерпретировать.
Кнопка "Вычитать со склада".
Имеет двойное назначение:
- разрешает вычитать 1 из остатка товара при его покупке
- запрещает показывать на сайте нулевые значения опций (значения с нулевым остатком)
Т.е. покупатель не сможет выбрать определенный цвет или размер товара, если этого цвета или размера нет в наличии.
Кнопка работает как при добавлении товара, так и при обновлении.
Поле "Скидка % от количества".
В этом поле можно установить скидку в цене, в зависимости от количества штук товара в одном заказе. Если покупатель заказывает оптовую партию товара, то есть резон сделать ему скидку:
(разделитель запятая. При покупке от 4 до 9 штук - скидка 2%, при покупке от 10 до 14 штук - скидка 5% ...)
Товар имеет Опции.
Если товар имеет опции, то остаток товара вычисляется автоматически, как сумма остатков значений опций. При этом, остаток товара из колонки 14 (см. примеры выше) игнорируется.
Остаток ноль. Статус
В прайс листе есть товар с нулевым остатком.
1. В режиме добавления, плагин создаст в магазине товар с нулевым остатком
2. В режиме обновления, плагин учтет принадлежность товара поставщику:
- если товар принадлежит поставщику, прайс лист которого обрабатывается в данный момент, то товар в магазине получит остаток 0
- если товар принадлежит другому поставщику (у поставщиков одинаковые артикулы на этот товар), то плагин не поставит в товаре остаток 0 и не обновит цену.
Чужой поставщик не имеет права обнулить товар.
Товар исчез из прайс листа.
Т.е. в прайс листе товара уже нет, а в магазине он "Есть в наличии".
Чтобы избежать такой неприятной ситуации, необходимо, перед обработкой прайс листа обнулить все товары поставщика.
Тогда после обновления, те товары, которых не оказалось в прайс листе останутся с нулевыми остатками, а те товары, которые обновятся, получат новые реальные остатки.
Во вкладке "Инструменты", есть три функции обнуления остатков:
1. За доли секунды обнуляет остатки товарам, принадлежащих данному поставщику или товарам всех поставщиков. Зависит от этой кнопки, расположенной в фильтре инструментов (остальные фильтры не работают):
2. Если в Поле1 прописать число 0 и нажать "Старт", плагин не только обнулит остатки товарам, отмеченным в фильтре (все фильтры работают), но и прибавит к порядку сортировки каждого обнуленного товара, число 100000.
После обработки прайс листа, все обновившиеся товары получат реальный остаток, и у них, от порядка сортировки будет вычтено число 100000. Не обновившиеся товары останутся с нулевыми остатками и в конце списка.
Эта функция работает гораздо медленнее функции 1.
К недостаткам этой функции можно отнести то, что во время обработки прайс листа, товары поставщика показываются на сайте, как "Нет в наличии".
3. Если прайс лист обрабатывался примерно 20 минут, то в Поле1 можно прописать число 25 и нажать "Старт".
Преимущество этой функции в том, что в течение 20 минут, пока обрабатывался прайс лист, товары показывались на сайте, такими, какими есть.
По скорости работы функция 3 не опережает функцию 2.
Статус товара.
Статус товара высвечивается на сайте, в карточке товара:
В OpenCart есть один Статус для товаров, которые есть в наличии, он называется "Есть на складе" и несколько статусов для товаров, которые закончились (остаток равен нулю или меньше нуля).
Админ-панель -> Настройки -> Локализация -> Состояние на складе:
Красной линией подчеркнут Статус, который тоже может быть присвоен товарам с нулевым остатком. Что является обманом покупателя, и не рекомендуется к использованию.
Статус, который должен быть установлен в товаре при нулевом остатке, можно выбрать в форме поставщика:
Обратите внимание, меню отмечено красным цветом, значит, оно работает только в режиме добавления нового товара.
В режиме обновления, плагин не меняет Статусы товаров.
Чтобы изменить Статусы загруженных товаров, нужно воспользоваться инструментом:
Статус №5 - это статус "Нет в наличии".
Посмотреть номера статусов можно в БД в таблице stock_status:
Остаток товара. Парсинг
Допустим, что на страницах сайта поставщика выводятся остатки товаров и фрагмент веб-страницы выглядит так:
Остаток товара на складе подчеркнут красной линией.
Допустим, что ссылки на страницы находятся в колонке 12. Следовательно, параметры парсинга будут: qu=" и " поскольку число 23 находится между ними:
(параметры разделяются запятой).
Но параметр qu=" встречается и выше (подчеркнуто синей линией). В таком случае, плагин спарсит текст: "UAH".
Значит нужно прописать текст, с которого плагин должен начинать парсить веб-страницу:
(подчеркнуто синий линией).
Обычно, остатки в числовом виде не выводятся на сайтах поставщиков, приведенный выше пример - фантастика. И вообще, парсинг остатков вещь сомнительная. Остатки нужно брать из прайс листов, причем, обновлять их нужно несколько раз в день, чтобы поддерживать актуальность наличия товаров в магазине.
Обновлять остатки товаров в магазине нужно часто и быстро!
Чаще всего фрагмент веб-страницы выглядит так:
Допустим что на разных страницах сайта поставщика встречаются такие тексты: "осталось мало", "много" и "есть в наличии".
OpenCart понимает только цифровой остаток, значит нужно прописать интерпретатор: