Jump to content

Как Изменить Категорию Товара Через Csv?


Recommended Posts

Здравствуйте, вообщем вопрос: есть товар он находится в категории телевизоры, я хочу его перенести в категорию телефоны. Делаю выгрузку, меняю там категорию на телефоны и загружаю. Итог: у товара добавилась еще одна под категория. Как я понимаю надо внести изменения в логику работы import.php - чтобы значение перезаписывалось, а если пусто оставалось прежнем.

 

Кто может что-то подсказать? Интересно почему так сделано изначально.



// Отдельная функция для импорта категории
    private function import_category($category)
    {            
        // Поле "категория" может состоять из нескольких имен, разделенных subcategory_delimiter-ом
        // Только неэкранированный subcategory_delimiter может разделять категории
        $delimiter = $this->subcategory_delimiter;
        $regex = "/\\DELIMITER((?:[^\\\\\DELIMITER]|\\\\.)*)/";
        $regex = str_replace('DELIMITER', $delimiter, $regex);
        $names = preg_split($regex, $category, 0, PREG_SPLIT_DELIM_CAPTURE);
        $id = null;   
        $parent = 0; 
        
        // Для каждой категории
        foreach($names as $name)
        {
            // Заменяем \/ на /
            $name = trim(str_replace("\\$delimiter", $delimiter, $name));
            if(!empty($name))
            {
                // Найдем категорию по имени
                $this->db->query('SELECT id FROM __categories WHERE name=? AND parent_id=?', $name, $parent);
                $id = $this->db->result('id');
                
                // Если не найдена - добавим ее
                if(empty($id))
                    $id = $this->categories->add_category(array('name'=>$name, 'parent_id'=>$parent, 'meta_title'=>$name,  'meta_keywords'=>$name,  'meta_description'=>$name, 'url'=>$this->translit($name)));
 
                $parent = $id;
            }    
        }
        return $id;
    }
Link to post
Share on other sites

А зачем импортом? В админке отметьте товары, которые надо перенести и внизу, в выпадающем списке выберите "Перенести в категорию"

 

Если всё же хотите импортом, то перед загрузкой категорий нужно у товара все категории удалить. Для этого замените код (примерно 266 строка) в simpla/ajax/import.php

		// Добавляем категорию к товару
		if(!empty($category_id))
			$this->categories->add_product_category($product_id, $category_id);

на этот

		// Добавляем категорию к товару
		if(!empty($category_id))
			$this->db->query('DELETE FROM __products_categories WHERE product_id = ?', $product_id);
			$this->categories->add_product_category($product_id, $category_id);
Edited by koteyka
Link to post
Share on other sites

 

А зачем импортом? В админке отметьте товары, которые надо перенести и внизу, в выпадающем списке выберите "Перенести в категорию"

 

Если всё же хотите импортом, то перед загрузкой категорий нужно у товара все категории удалить. Для этого замените код (примерно 266 строка) в simpla/ajax/import.php

		// Добавляем категорию к товару
		if(!empty($category_id))
			$this->categories->add_product_category($product_id, $category_id);

на этот

		// Добавляем категорию к товару
		if(!empty($category_id))
			$this->db->query('DELETE FROM __products_categories WHERE product_id = ?', $product_id);
			$this->categories->add_product_category($product_id, $category_id);

 

Вы бы проверили свой способ. Ведь грубая ошибка прямо в глаза бросается.

И код, который Вы предлагаете заменить, в указанном файле отсутствует.

Link to post
Share on other sites

И код, который Вы предлагаете заменить, в указанном файле отсутствует.

Да. Фореч пропустил и скобки, по памяти писал. Думаю, раз человек нашел нужную функцию, то скобки он в состоянии был заметить.

 

Найти

			// Добавляем категории к товару
			if(!empty($categories_ids))
				foreach($categories_ids as $c_id)
					$this->categories->add_product_category($product_id, $c_id);

заменить на


			// Добавляем категории к товару
			if(!empty($categories_ids))
                        {
                                $this->db->query('DELETE FROM __products_categories WHERE product_id = ?', $product_id);
				foreach($categories_ids as $c_id)
					$this->categories->add_product_category($product_id, $c_id);
                        }
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...