Кодировка при экспорте в joomshopping, плюс добавление полей
После экспорта товаров в joomshopping, файл CSV вместо русских букв содержал что-то своё... Решилось не сложно.
Так же обнаружилось, что не все поля участвуют в экспорте.
Кодировка
Может это случилось только в моём конкретном случае, но всё-таки...
В файле: administrator\components\com_jshopping\importexport\simpleimport\simpleimport.php при перечислении полей, которые попадут в экспортный файл убрал "utf8_decode".
Т.е. Было так:
foreach($products as $prod){
$row = array();
$row[] = $prod->product_id;
$row[] = $prod->product_ean;
$row[] = $prod->product_quantity;
$row[] = $prod->product_date_added;
$row[] = $prod->product_price;
$row[] = $prod->tax;
$row[] = utf8_decode($prod->cat_name);
$row[] = utf8_decode($prod->name);
$row[] = utf8_decode($prod->short_description);
$row[] = utf8_decode($prod->description);
$data[] = $row;
}
Стало так:
foreach($products as $prod){
$row = array();
$row[] = $prod->product_id;
$row[] = $prod->product_ean;
$row[] = $prod->product_quantity;
$row[] = $prod->product_date_added;
$row[] = $prod->product_price;
$row[] = $prod->tax;
$row[] = $prod->cat_name;
$row[] = $prod->name;
$row[] = $prod->short_description;
$row[] = $prod->description;
$data[] = $row;
}
Добавить поля
Так же на в родном варианте содержаться далеко не все поля товара, помог в этом вариант экспорта скачанный с сайта rtr24.ru.
Полный вариант я устанавливать не стал, ограничился заменой экспортируемых полей, мне хватило:
$query = "SELECT
prod.product_id,
prod.product_ean,
prod.product_quantity,
prod.product_date_added,
prod.product_price,
tax.tax_value as tax,
prod.`".$lang->get('name')."` as name,
prod.`".$lang->get('short_description')."` as short_description,
prod.`".$lang->get('description')."` as description,
cat.`".$lang->get('name')."` as cat_name,
categ.category_id,
prod.product_manufacturer_id,
prod.`".$lang->get('meta_description')."` as meta_description,
prod.`".$lang->get('meta_keyword')."` as meta_keyword,
prod.product_publish,
prod.product_template,
prod.delivery_times_id
FROM `#__jshopping_products` AS prod
LEFT JOIN `#__jshopping_products_to_categories` AS categ USING (product_id)
LEFT JOIN `#__jshopping_categories` as cat on cat.category_id=categ.category_id
LEFT JOIN `#__jshopping_taxes` AS tax ON tax.tax_id = prod.product_tax_id
GROUP BY prod.product_id";
$db->setQuery($query);
$products = $db->loadObjectList();
$data = array();
$head = array("product_id","ean","qty","date","price","tax","category","name","short_description","description", "category_id", "product_manufacturer_id", "meta_description", "meta_keyword", "product_publish", "product_template", "delivery_times_id");
$data[] = $head;
foreach($products as $prod){
$row = array();
$row[] = $prod->product_id;
$row[] = $prod->product_ean;
$row[] = $prod->product_quantity;
$row[] = $prod->product_date_added;
$row[] = $prod->product_price;
$row[] = $prod->tax;
$row[] = ($prod->cat_name);
$row[] = ($prod->name);
$row[] = ($prod->short_description);
$row[] = ($prod->description);
$row[] = ($prod->category_id);
$row[] = ($prod->product_manufacturer_id);
$row[] = ($prod->meta_description);
$row[] = ($prod->meta_keyword);
$row[] = $prod->product_publish;
$row[] = $prod->product_template;
$row[] = $prod->delivery_times_id;
$data[] = $row;
}
Ссылки и благодарности
Решение с кодировкой подсмотрел на спец. форуме: https://joomshopping.pro/forum/import-export-csv/28-ne-korrektnoe-otobrazhenie-kodirovki-pri-imp-i-eksp-tovara.html
Расширенный вариант импорта-экспорта: http://rtr24.ru/joomshopping/210-joomshopping-problema-s-utf8