megauser Posted January 26 Report Share Posted January 26 Подскажите как можно импортировать товары с одинаковыми названиями? чтоб он не обновлял товар, а создавал его, а в ссылку добавлял к примеру tovar_1 , tovar_2 и т.д. К примеру есть 3 товаров не имеющих артикула но название у всех Товар Товар Товар На выходе нужно чтоб в админке было 3 товара но ссылки были у них уникальные с приставкой числовой. Quote Link to post Share on other sites
phukortsin Posted January 26 Report Share Posted January 26 1. Переделкой скрипта импорта. Но вопрос в чистом виде весьма тонкий. Если сделать импорт еще раз, поменяв, например, цены, то товары размножатся... 2. Поменяв данные под текущий импорт. Например, придумав артикул... 3. Вообще задуматься над такой организацией. А как Вы будете продавать товары? Звонит покупатель, говорит, я заказывал товар ТАКОЙ-ТО. А у Вас товаров с таким название десяток. Или даже сотня... Quote Link to post Share on other sites
megauser Posted January 26 Author Report Share Posted January 26 5 часов назад, phukortsin сказал: 1. Переделкой скрипта импорта. Но вопрос в чистом виде весьма тонкий. Если сделать импорт еще раз, поменяв, например, цены, то товары размножатся... 2. Поменяв данные под текущий импорт. Например, придумав артикул... 3. Вообще задуматься над такой организацией. А как Вы будете продавать товары? Звонит покупатель, говорит, я заказывал товар ТАКОЙ-ТО. А у Вас товаров с таким название десяток. Или даже сотня... Там будет разовый импорт, просто вопрос в названиях одинаковых. Советуете сделать артикулы? но разве они тогда не будут по вариантам парситься? Товар - арт1 Товар - арт2 Это будет один товар с 2 вариантами же Quote Link to post Share on other sites
a13x Posted January 26 Report Share Posted January 26 3 часа назад, megauser сказал: Там будет разовый импорт, просто вопрос в названиях одинаковых. Советуете сделать артикулы? но разве они тогда не будут по вариантам парситься? Зависит от того кто вам будет парсить товары. Если бы например это делал я, то я бы сразу парсил в симплу, без промежуточного файла, тогда можно будет сразу все варианты добавить от конкретного товара, но в любом случае можно даже и с промежуточным файлом делать, по примеру импорта симплы, просто трудозатратнее. Quote Link to post Share on other sites
megauser Posted January 26 Author Report Share Posted January 26 1 час назад, a13x сказал: Зависит от того кто вам будет парсить товары. Если бы например это делал я, то я бы сразу парсил в симплу, без промежуточного файла, тогда можно будет сразу все варианты добавить от конкретного товара, но в любом случае можно даже и с промежуточным файлом делать, по примеру импорта симплы, просто трудозатратнее. по сути вариантов не должно быть, должны быть товары с одинаковым названием ( артикула по умолчанию нет) Как сделать чтоб писал уникальное название и к url добавлял приставку? Quote Link to post Share on other sites
megauser Posted January 26 Author Report Share Posted January 26 1 час назад, a13x сказал: Зависит от того кто вам будет парсить товары. Если бы например это делал я, то я бы сразу парсил в симплу, без промежуточного файла, тогда можно будет сразу все варианты добавить от конкретного товара, но в любом случае можно даже и с промежуточным файлом делать, по примеру импорта симплы, просто трудозатратнее. Импорт до безобразия прост. Категория, название, описание и фото https://yadi.sk/i/psInWB1XTKpnAg Вот к примеру, должно получиться 5 товаров , в принципе обновление можно выпилить. Но url же формируется if(isset($item['url'])) $product['url'] = trim($item['url']); elseif(isset($item['name'])) $product['url'] = $this->translit($item['name']); Соответственно и url будет одинаковый, а нужно чтоб был уникальный, а название пусть будет одно. Так и задумано. Quote Link to post Share on other sites
phukortsin Posted January 27 Report Share Posted January 27 (edited) 10 часов назад, a13x сказал: Зависит от того кто вам будет парсить товары. Вопрос был про импорт. 1. Разговор про "парсить" - в данном случае несколько некорректно и бессмысленно. 2. Неизвестно вообще, будет для ТС кто-то парсить или нет. 3. Даже если для ТС кто-то будет парсить, то зависит не от того, КТО будет этим заниматься, а КАК будет это делать. Думаю, (почти) любой разработчик может это сделать как напрямую, так и через промежуточный файл. Edited January 27 by phukortsin Quote Link to post Share on other sites
phukortsin Posted January 27 Report Share Posted January 27 (edited) 9 часов назад, megauser сказал: Вот к примеру, должно получиться 5 товаров , в принципе обновление можно выпилить. Но url же формируется if(isset($item['url'])) $product['url'] = trim($item['url']); elseif(isset($item['name'])) $product['url'] = $this->translit($item['name']); Соответственно и url будет одинаковый, а нужно чтоб был уникальный, а название пусть будет одно. Так и задумано. Пробуйте, например, так: 1. Удалить все выполнения обновления, отставив только создание нового товара. 2. Изменить сопоставление под Ваши нужды (или вообще его убрать, считая каждую строку в файле за новый товар). 3. После создания нового товара if(empty($product_id)) $product_id = $this->products->add_product($product); выполнить что-то типа $this->products->update_product($product_id, array('url'=>$product->url."_".$product_id)); Edited January 27 by phukortsin Quote Link to post Share on other sites
a13x Posted January 27 Report Share Posted January 27 (edited) 2 часа назад, phukortsin сказал: Пробуйте, например, так: 1. Удалить все выполнения обновления, отставив только создание нового товара. 2. Изменить сопоставление под Ваши нужды (или вообще его убрать, считая каждую строку в файле за новый товар). 3. После создания нового товара if(empty($product_id)) $product_id = $this->products->add_product($product); выполнить что-то типа $this->products->update_product($product_id, array('url'=>$product->url."_".$product_id)); В классе PRODUCTS при добавлении нового товара идёт проверка по урлу и если он есть то создаётся постфикс. public function add_product($product) { $product = (array) $product; if(empty($product['url'])) { $product['url'] = preg_replace("/[\s]+/ui", '-', $product['name']); $product['url'] = strtolower(preg_replace("/[^0-9a-zа-я\-]+/ui", '', $product['url'])); } // Если есть товар с таким URL, добавляем к нему число while($this->get_product((string)$product['url'])) { if(preg_match('/(.+)_([0-9]+)$/', $product['url'], $parts)) $product['url'] = $parts[1].'_'.($parts[2]+1); else $product['url'] = $product['url'].'_2'; } if($this->db->query("INSERT INTO __products SET ?%", $product)) { $id = $this->db->insert_id(); $this->db->query("UPDATE __products SET position=id WHERE id=?", $id); return $id; } else return false; } Edited January 27 by a13x Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.