Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

ПРи копировании товара сбрасывается главная категория


Absalem
 Поделиться

Рекомендованные сообщения

При копировании товара сбрасывается главная категория до самого верхнего уровня категории - если сначала было "Диваны - Кожаные", то после копирования у нового товара будет главная категория "Диваны". Галочки в блоке  "Показывать в категориях" сохраняются.

Где поправить?

Ссылка на комментарий
Поделиться на других сайтах


за копирование отвечает функция copyProduct в файле admin\model\catalog\product.php

 

проверил на ocStore 1.5.5.1.2 - копирует нормально, с сохранением всех категорий, код такой:

    public function copyProduct($product_id) {
        $query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) WHERE p.product_id = '" . (int)$product_id . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "'");
        
        if ($query->num_rows) {
            $data = array();
            
            $data = $query->row;
            
            $data['sku'] = '';
            $data['upc'] = '';
            $data['viewed'] = '0';
            $data['keyword'] = '';
            $data['status'] = '0';
                        
            $data = array_merge($data, array('product_attribute' => $this->getProductAttributes($product_id)));
            $data = array_merge($data, array('product_description' => $this->getProductDescriptions($product_id)));            
            $data = array_merge($data, array('product_discount' => $this->getProductDiscounts($product_id)));
            $data = array_merge($data, array('product_filter' => $this->getProductFilters($product_id)));
            $data = array_merge($data, array('product_image' => $this->getProductImages($product_id)));        
            $data = array_merge($data, array('product_option' => $this->getProductOptions($product_id)));
            $data = array_merge($data, array('product_related' => $this->getProductRelated($product_id)));
            $data = array_merge($data, array('product_reward' => $this->getProductRewards($product_id)));
            $data = array_merge($data, array('product_special' => $this->getProductSpecials($product_id)));
            $data = array_merge($data, array('product_category' => $this->getProductCategories($product_id)));
            $data = array_merge($data, array('product_download' => $this->getProductDownloads($product_id)));
            $data = array_merge($data, array('product_layout' => $this->getProductLayouts($product_id)));
            $data = array_merge($data, array('product_store' => $this->getProductStores($product_id)));
            
            $this->addProduct($data);
        }
    }

 

не в курсе - что у вас за версия и сборка, попробуйте заменить код, если отличается (только копию своего файла перед заменой сделайте)

Ссылка на комментарий
Поделиться на других сайтах

Посмотрите в

\admin\model\catalog\product.php

Вам нужно в

public function copyProduct($product_id) 

 

наличие строки 

$data = array_merge($data, array('product_category' => $this->getProductCategories($product_id)));

Ссылка на комментарий
Поделиться на других сайтах

  • 10 месяцев спустя...

Тот же вопрос мучает. 

Код такой же, строка есть. При копировании категории сохраняет, но главной делает ту, что самого верхнего уровня, в точности как описано в старте темы.

Ссылка на комментарий
Поделиться на других сайтах


  • 4 недели спустя...

У меня та же история, подозреваю, что из  за этого, но не уверен???

    <file name="admin/model/catalog/product.php">
        <operation error="log"><!-- Fix to load product images by sort order -->
            <search position="replace"><![CDATA[$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_image WHERE product_id = '" . (int)$product_id . "'");]]></search>
            <add><![CDATA[
        if (!$this->config->get('custom_image_titles_status')) {
            $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_image WHERE product_id = '" . (int)$product_id . "' ORDER BY sort_order ASC");
        } else {
            $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_image WHERE product_id = '" . (int)$product_id . "'");
        }
                ]]></add>
        </operation>
    </file>

Если да то пожалуйста подскажите как исправить.

Изменено пользователем qqq64
Ссылка на комментарий
Поделиться на других сайтах


  • 4 месяца спустя...

Решение

 

/admin/model/catalog/product.php

 

после

$data = array_merge($data, array('product_category' => $this->getProductCategories($product_id)));

добавляем

$data = array_merge($data, array('main_category_id' => $this->getProductMainCategoryId($product_id)));

  • +1 2
Ссылка на комментарий
Поделиться на других сайтах


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.