Страница 1 из 1

Очистка каталога товаров (3х)

Добавлено: 13.05.2020, 09:56
amnesiac
В админке в настройках каталога есть кнопка "Очистить каталог товаров". Все бы хорошо, но помимо товаров и свойств она прибивает категории и бренды. Мне как раз надо чтобы и категории и бренды остались. Вручную дамп/рестор таблиц категорий и брендов не получилось сделать, надо ковыряться с настройками phpadmin у провайдера. Очистить вручную таблицу ok_products мало, надо подчищать еще кучу таблиц (иначе импорт товаров не работает).

Нашел функцию clearCatalogData в файлике /Okay/Core/DataCleaner.php. Это же она вызывается по кнопке "Очистить каталог товаров"?

Приведу ее полностью:

Код: Выделить всё

        $sql = $this->queryFactory->newSqlQuery()->setStatement("DELETE FROM ".CommentsEntity::getTable()." WHERE `type`='product'");
        $this->db->query($sql);

        $sql = $this->queryFactory->newSqlQuery()->setStatement("UPDATE ".PurchasesEntity::getTable()." SET `product_id`=0, `variant_id`=0");
        $this->db->query($sql);

        $this->truncateTable(BrandsEntity::getTable());
        $this->truncateTable(BrandsEntity::getLangTable());

        $this->truncateTable(CategoriesEntity::getTable());
        $this->truncateTable(CategoriesEntity::getLangTable());
        $this->truncateTable('__categories_features');

        $this->truncateTable(FeaturesEntity::getTable());
        $this->truncateTable(FeaturesAliasesValuesEntity::getTable());
        $this->truncateTable(FeaturesValuesEntity::getTable());
        $this->truncateTable(FeaturesValuesAliasesValuesEntity::getTable());
        $this->truncateTable(FeaturesEntity::getLangTable());
        $this->truncateTable(FeaturesAliasesValuesEntity::getLangTable());
        $this->truncateTable(FeaturesValuesEntity::getLangTable());

        $this->truncateTable(ProductsEntity::getTable());
        $this->truncateTable(ProductsEntity::getLangTable());
        $this->truncateTable(ImagesEntity::getTable());
        $this->truncateTable('__related_products');
        $this->truncateTable('__products_categories');
        $this->truncateTable('__products_features_values');

        $this->truncateTable(VariantsEntity::getTable());
        $this->truncateTable(VariantsEntity::getLangTable());

        $this->truncateTable('__related_blogs');
        $this->truncateTable('__import_log');

        return ExtenderFacade::execute(__METHOD__, null, func_get_args());


Я правильно понимаю, что если я закомментирую следующие строки, то все товары удалятся, а все категории и бренды останутся?

Код: Выделить всё

        $this->truncateTable(BrandsEntity::getTable());
        $this->truncateTable(BrandsEntity::getLangTable());

        $this->truncateTable(CategoriesEntity::getTable());
        $this->truncateTable(CategoriesEntity::getLangTable());
        $this->truncateTable('__categories_features');


Спасибо!

Добавлено: 13.05.2020, 11:32
softmobidev
вообще конечно было бы удобнее чтобы под каждую сущность была своя кнопка очистки
очистить товары, очистить бренды, очистить категории и так далее

Добавлено: 13.05.2020, 12:04
amnesiac
Лучше набор чекбоксов...

Добавлено: 13.05.2020, 14:41
zyxer
Да, бренды и категории останутся, но таблицу __categories_features думаю стоит очищать, это связь категории с свойства (свойства же вы очищаете)

Добавлено: 15.05.2020, 11:17
amnesiac
Да, бренды и категории остались. Там же можно закомментировать удаление изображений.