поставщик присылает свой прайс-лист, в котором единственное общее с текущим - это колонки артикулов и цен
Код: Выделить всё
// Соответствие полей в базе и имён колонок в файле
private $columns_names = array(
'name'=> array('product', 'name', 'товар', 'название', 'наименование'),
'url'=> array('url', 'адрес'),
'visible'=> array('visible', 'published', 'видим'),
'featured'=> array('featured', 'hit', 'хит', 'рекомендуемый'),
'category'=> array('category', 'категория'),
'brand'=> array('brand', 'бренд'),
'variant'=> array('variant', 'вариант'),
'price'=> array('price', 'цена'),
'currency'=> array('currency_id', 'currency', 'ID валюты'),
'compare_price'=> array('compare price', 'старая цена'),
'sku'=> array('sku', 'артикул'),
'stock'=> array('stock', 'склад', 'на складе'),
'meta_title'=> array('meta title', 'заголовок страницы'),
'meta_keywords'=> array('meta keywords', 'ключевые слова'),
'meta_description'=> array('meta description', 'описание страницы'),
'annotation'=> array('annotation', 'аннотация', 'краткое описание'),
'description'=> array('description', 'описание'),
'images'=> array('images', 'изображения')
);
Код: Выделить всё
// Соответствие полей в базе и имён колонок в файле
private $columns_names = array(
'price'=> array('price', 'цена'),
'compare_price'=> array('compare price', 'старая цена'),
'sku'=> array('sku', 'артикул'),
);
Vitaly писал(а):Самое простое, что можно попробовать сделать в вашем случае
....
Попробуйте изменить, убрать лишнее, в итоге будет так:
...
После этого должно обновлять только цены по артикулу, остальную информацию затронуть не должно.
Благодарю заранее! Порадовали)OkayCMS писал(а):В ближайшее время мы займемся вопросом оптимизации импорта/экспорта.
Код: Выделить всё
if(isset($item['meta_title'])) {
$product['meta_title'] = trim($item['meta_title']);
} else {
$product['meta_title'] = $product['name'];
}
if(isset($item['meta_keywords'])) {
$product['meta_keywords'] = trim($item['meta_keywords']);
} else {
$product['meta_keywords'] = $product['name'];
}
if(isset($item['meta_description'])) {
$product['meta_description'] = trim($item['meta_description']);
} else {
$product['meta_description'] = $product['name'];
}
Потому, что вы охарактеризовали это как проблему, хотя проблемы нет и исправлять там нечего. Нет новой цены - оставляем поле пустым.1. Почему Вы сделали вывод "вас это напрягает" - не понимаю. Я ведь четко написал "Поправить это несложно".
Знал, что вам понравится.Симпатичное выражение
При таком старая цена, если такая была ранее, исчезнет. Вот и получается плохо. Возможно, Вас это устроит, но не всем такое понравится...Vitaly писал(а):Нет новой цены - оставляем поле пустым.
Да пожалуйста, кому не нужно, удалят вместе с остальным и строку старой цены из файла импорта. По моему опыту, это поле нужное, но мне не принципиально и я удалять его не запрещал.Возможно, Вас это устроит, но не всем такое понравится...
Если постоянно заменять все фото, то это будет не нужная большая нагрузка. Нужно дополнительно делать какие-то проверки, чтобы заменять только битые фото.Александр Б писал(а):Очень актуально научить импорт не добавлять фото к товару, а заменять их.
Александр Б писал(а):Очень актуально научить импорт не добавлять фото к товару, а заменять их. Так очень быстро удастся избавиться от пустых изображений. У меня сейчас треть товаров с битыми фото, что очень не комильфо. Кто-нибудь знает что подкрутить?
Я же написал что тумблер сделаю. Подключу радиокнопку с переключением вариантов если часто нужно будет. Да или просто назад верну потом.OkayCMS писал(а):Если постоянно заменять все фото
Битые я уже нашел, мне бы их массово удалить хотя бы. Я думаю что замена фото вместо добавления подойдет лучше всего - битые сразу нормальными заменятся.korshunov писал(а):Возможно, это заинтересует:
http://simpla-tuning.com/izobrazheniya-kontrolkartinok
Если подшаманить импорт, оставить два поля - изображения и артикул, (по принципу обновления цены) можно массово заменить фото. Неудобство в том, что нужен список артикулов с битыми фотками.Александр Б писал(а):Битые я уже нашел, мне бы их массово удалить хотя бы. Я думаю что замена фото вместо добавления подойдет лучше всего - битые сразу нормальными заменятся.
Код: Выделить всё
$current_images = $this->products->get_images(array('product_id'=>$product_id));
foreach($current_images as $image) {
$this->products->delete_image($image->id);
}
Ну так и хочется сказать избитую фразу - "Спасибо кэп". Но не буду. Если предполагается заменить битые фото, то я проблемы не вижу.korshunov писал(а):3.1 если у товара есть фото, а в файле импорта колонка изображений пуста, то все фото пропадут.
А разве я не писал, что это подойдет только для разовой акции, по замене битых фоток?))korshunov писал(а):3.2 Если импорт вести регулярно, то выходит лишняя нагрузка как по удалению записей в базу, так и по удалению файлов изображений.
Все верно, но он не удаляет битые фото. И чего можно ждать от решения в 3 строки? Может оно и грубое, но если бы у меня стояла задача один раз снести битые фотки, то я им бы воспользовался и не городил огород. Я понимаю, что вам нравится упражняться в программировании, но мне и думаю многим время дороже, и такую задачу я бы решил быстро вот таким грубым способом, в три счёта. А потом вернул на место оригинальный файл импорта.korshunov писал(а):4. Стандартный метод импорта работает так: рассматривает очередное фото из файла, если такого у товара нет, то добавляет, или никаких действий не делает.
А надо бы видеть, что предложенный метод удаляет не только битые фото, но и небитые тоже удаляет. Он удаляет ВСЕ фото товара...Vitaly писал(а):Если предполагается заменить битые фото, то я проблемы не вижу.
Качество программного решения обычно не определяется количеством строк...Vitaly писал(а):И чего можно ждать от решения в 3 строки?
Ага, и я это понимаю. Если в товаре есть битые и нормальные фото, и нужно сделать выборку по битым и удалить только их - то это в платный раздел.korshunov писал(а):Он удаляет ВСЕ фото товара...
Вернуться в «Предложения по улучшению OkayCMS»
Сейчас этот раздел просматривают: 5 гостей