Сообщение #1 amnesiac » 13.05.2020, 09:56
В админке в настройках каталога есть кнопка "Очистить каталог товаров". Все бы хорошо, но помимо товаров и свойств она прибивает категории и бренды. Мне как раз надо чтобы и категории и бренды остались. Вручную дамп/рестор таблиц категорий и брендов не получилось сделать, надо ковыряться с настройками 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');
Спасибо!
В админке в настройках каталога есть кнопка "Очистить каталог товаров". Все бы хорошо, но помимо товаров и свойств она прибивает категории и бренды. Мне как раз надо чтобы и категории и бренды остались. Вручную дамп/рестор таблиц категорий и брендов не получилось сделать, надо ковыряться с настройками phpadmin у провайдера. Очистить вручную таблицу ok_products мало, надо подчищать еще кучу таблиц (иначе импорт товаров не работает).
Нашел функцию clearCatalogData в файлике /Okay/Core/DataCleaner.php. Это же она вызывается по кнопке "Очистить каталог товаров"?
Приведу ее полностью:
[code]
$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());
[/code]
Я правильно понимаю, что если я закомментирую следующие строки, то все товары удалятся, а все категории и бренды останутся?
[code]
$this->truncateTable(BrandsEntity::getTable());
$this->truncateTable(BrandsEntity::getLangTable());
$this->truncateTable(CategoriesEntity::getTable());
$this->truncateTable(CategoriesEntity::getLangTable());
$this->truncateTable('__categories_features');
[/code]
Спасибо!