Jump to content

Как импортировать товары с одинаковым названием?


Recommended Posts

Подскажите как можно импортировать товары с одинаковыми названиями? чтоб он не обновлял товар, а создавал его, а в ссылку добавлял к примеру tovar_1 , tovar_2 и т.д.

К примеру есть 3 товаров не имеющих артикула но название у всех

Товар

Товар 

Товар

На выходе нужно чтоб в админке было 3 товара но ссылки были у них уникальные с приставкой числовой.

Link to post
Share on other sites

1. Переделкой скрипта импорта. Но вопрос в чистом виде весьма тонкий. Если сделать импорт еще раз, поменяв, например, цены, то товары размножатся...

2. Поменяв данные под текущий импорт. Например, придумав артикул...

3. Вообще задуматься над такой организацией. А как Вы будете продавать товары? Звонит покупатель, говорит, я заказывал товар ТАКОЙ-ТО.  А у Вас товаров с таким название десяток. Или даже сотня...

 

Link to post
Share on other sites
5 часов назад, phukortsin сказал:

1. Переделкой скрипта импорта. Но вопрос в чистом виде весьма тонкий. Если сделать импорт еще раз, поменяв, например, цены, то товары размножатся...

2. Поменяв данные под текущий импорт. Например, придумав артикул...

3. Вообще задуматься над такой организацией. А как Вы будете продавать товары? Звонит покупатель, говорит, я заказывал товар ТАКОЙ-ТО.  А у Вас товаров с таким название десяток. Или даже сотня...

 

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

Товар  - арт1

Товар - арт2

Это будет один товар с 2 вариантами же

Link to post
Share on other sites
3 часа назад, megauser сказал:

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

Зависит от того кто вам будет парсить товары. Если бы например это делал я, то я бы сразу парсил в симплу, без промежуточного файла, тогда можно будет сразу все варианты добавить от конкретного товара, но в любом случае можно даже и с промежуточным файлом делать, по примеру импорта симплы, просто трудозатратнее.

Link to post
Share on other sites
1 час назад, a13x сказал:

Зависит от того кто вам будет парсить товары. Если бы например это делал я, то я бы сразу парсил в симплу, без промежуточного файла, тогда можно будет сразу все варианты добавить от конкретного товара, но в любом случае можно даже и с промежуточным файлом делать, по примеру импорта симплы, просто трудозатратнее.

по сути вариантов не должно быть, должны быть товары с одинаковым названием ( артикула по умолчанию нет) 

Как сделать чтоб писал уникальное название и к url добавлял приставку?

Link to post
Share on other sites
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 будет одинаковый, а нужно чтоб был уникальный, а название пусть будет одно. Так и задумано.

Link to post
Share on other sites
10 часов назад, a13x сказал:

Зависит от того кто вам будет парсить товары.

Вопрос был про импорт.
1. Разговор про "парсить" - в данном случае несколько некорректно и бессмысленно.
2. Неизвестно вообще, будет для ТС кто-то парсить или нет.
3. Даже если для ТС кто-то будет парсить, то зависит не от того, КТО будет этим заниматься, а КАК будет это делать. Думаю, (почти) любой разработчик может это сделать как напрямую, так и через промежуточный файл.

Edited by phukortsin
Link to post
Share on other sites
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 by phukortsin
Link to post
Share on other sites
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 by a13x
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...