В некоторых загрузках на маркетплейсы необходимо указывать поле 'Тип товара'. Что это такое, зачем оно нужно и как его прописать? И нужно ли, если можно сделать скрипт который автоматически будет генерировать тип товара исходя из его названия.
Тип товара - это основная характеристика что это за товар. Например Кровать, Велосипед, Ноутбук. Некоторые выгрузки, на тот же Яндекс маркет требуют указать не только название но и его тип. Как правило на это свойство задействуют стандартное поле в 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 и в любом удобном месте вставляем кнопку что бы запускать обновления типов товара при добавлении новых позиций на сайт:
И не забывайте что в admin/controller/common/header.php надо добавить значение для token - ведь мы в коде шаблона обращаемся в админку - где нужен в GET параметре токен.
Таким образом у нас есть кнопка которая будет генерировать тип товаров для выгрузки.
На примере использовался код для Opencart 2.x который можно адаптировать под свой магазин