Автоматический тип товара для выгрузки в макретплейсы (Розетка, Хотлайн, Яндекс Маркет)

категория: , Полезности


Опубликовано: 22.06.2018 Просмотров: 195 Комментарии: 0


Автоматический тип товара для выгрузки в макретплейсы (Розетка, Хотлайн, Яндекс Маркет)

Пример создания скрипта который может генерировать автоматический тип товара исходя из его названия


В некоторых загрузках на маркетплейсы необходимо указывать поле "Тип товара". Что это такое, зачем оно нужно и как его прописать? И нужно ли, если можно сделать скрипт который автоматически будет генерировать тип товара исходя из его названия.

Тип товара - это основная характеристика что это за товар. Например Кровать, Велосипед, Ноутбук. Некоторые выгрузки, на тот же Яндекс маркет требуют указать не только название но и его тип. Как правило на это свойство задействуют стандартное поле в Opencart, например MPN.

Можно тип товара для каждого прописать вручную, но если у вас 20 000 товаров как быть? Месяц тратить времени? Нет конечно. Гораздо проще сделать это автоматически. Но подождите, подумаете вы, а как понять где слова типа в названии? Например: "Велосипед Prime range 23" как скрипт поймет что надо из названия брать слово "Велосипед" а не Prime или range. Конечно же без нашей помощи никак.


Для того что бы в названия товара брался его тип нам надо создать настройку в магазине config_replace_mpn (текстовое поле) где можно прописать все доступные типы в магазине. Это будет: Велосипед, Кровать, Подставка и т.п. - все зависит от того что вы продаете. Так вот скрипт берет эту настройку и смотрит если в названии товара есть слова которые прописаны в этой настройке - значит это и есть тип.

Пример реализации

В стандартное поле mpn будем сохранять тип товара. Для начала разместим рабочий код в контроллере. Для этого открываем файл admin/catalog/product.php где в удобное место вставляем функцию:

public function prefix() {
$all_product_query = $this->db->query("SELECT pd.name, p.mpn, p.product_id FROM " . DB_PREFIX . "product_description pd LEFT JOIN " . DB_PREFIX . "product p ON(p.product_id = pd.product_id)");
$count = 0;
foreach($all_product_query->rows as $product){
if(!$product['mpn']){
$mpn_plus = explode(",", $this->config->get('config_replace_mpn'));
foreach ($mpn_plus as $mpn) {
$mpn = trim($mpn);
$pos = stripos($product['name'], $mpn);
if($pos !== false) {
$all_product_query = $this->db->query("UPDATE " . DB_PREFIX . "product SET mpn = '" . $mpn . "' WHERE product_id = '" . $product['product_id'] ."'");
$count++;
}
}
}
}
$this->response->addHeader('Content-Type: application/json');
$this->response->setOutput(json_encode($count));
}
После чего идем в файл admin/view/template/common/header.tpl и в любом удобном месте вставляем кнопку что бы запускать обновления типов товара при добавлении новых позиций на сайт:
<a href="#" id="type_prefix_go" title="Прописать все товарам тип для YML выгрузки"><i class="fa fa-refresh" aria-hidden="true"></i></a>
<script>
  $('#type_prefix_go').on('click', function(e){
    e.preventDefault();
    $.ajax({
  url: 'index.php?route=catalog/product/prefix&token=<?php echo $token; ?>',
  type: 'post',
  dataType: 'json',
  success: function(json) {
        alert("Обновлено товаров: " + json);
  }
  });
  });
</script>

И не забывайте что в admin/controller/common/header.php надо добавить значение для token - ведь мы в коде шаблона обращаемся в админку - где нужен в GET параметре токен.

Таким образом у нас есть кнопка которая будет генерировать тип товаров для выгрузки.

На примере использовался код для Opencart 2.x который можно адаптировать под свой магазин

Комментарии:


Быстрый поиск

Похожее

Новое на сайте