Tumoxa Опубликовано 9 февраля, 2017 Жалоба Поделиться Опубликовано 9 февраля, 2017 Здравствуйте, вообщем вопрос: есть товар он находится в категории телевизоры, я хочу его перенести в категорию телефоны. Делаю выгрузку, меняю там категорию на телефоны и загружаю. Итог: у товара добавилась еще одна под категория. Как я понимаю надо внести изменения в логику работы 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; } Цитата Ссылка на сообщение Поделиться на другие сайты
koteyka Опубликовано 10 февраля, 2017 Жалоба Поделиться Опубликовано 10 февраля, 2017 (изменено) А зачем импортом? В админке отметьте товары, которые надо перенести и внизу, в выпадающем списке выберите "Перенести в категорию" Если всё же хотите импортом, то перед загрузкой категорий нужно у товара все категории удалить. Для этого замените код (примерно 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); Изменено 10 февраля, 2017 пользователем koteyka Цитата Ссылка на сообщение Поделиться на другие сайты
ahmed Опубликовано 10 февраля, 2017 Жалоба Поделиться Опубликовано 10 февраля, 2017 А зачем импортом? В админке отметьте товары, которые надо перенести и внизу, в выпадающем списке выберите "Перенести в категорию" Если всё же хотите импортом, то перед загрузкой категорий нужно у товара все категории удалить. Для этого замените код (примерно 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); Вы бы проверили свой способ. Ведь грубая ошибка прямо в глаза бросается.И код, который Вы предлагаете заменить, в указанном файле отсутствует. Цитата Ссылка на сообщение Поделиться на другие сайты
koteyka Опубликовано 10 февраля, 2017 Жалоба Поделиться Опубликовано 10 февраля, 2017 И код, который Вы предлагаете заменить, в указанном файле отсутствует.Да. Фореч пропустил и скобки, по памяти писал. Думаю, раз человек нашел нужную функцию, то скобки он в состоянии был заметить. Найти // Добавляем категории к товару 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); } Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.