В этой статье речь пойдет о том как удалять файлы изображений, привязанные к удаляемому товару. Дело в том что в Opencart это не предусмотрено. Если вы удалите товар, то его изображения останутся на сервере, а если вы обновляете ассортимент часто, то со временем вам магазин будет захламлен ненужными файлами изображений.
Единственное что нужно сделать это добавить функцию delete_image в модели для удаления таких фото.
Перед строкой
public function deleteProduct($product_id) { Добавляем функцию
private function delete_image($path) {
if (isset($path)) {
$path = rtrim(DIR_IMAGE . $path);
if (!file_exists($path)) {
$error= 1;
}
if ($path == rtrim(DIR_IMAGE . 'catalog/', '/')) {
$error = 1;
}
} else {
$error = 1;
}
if (!$this->user->hasPermission('modify', 'common/filemanager')) {
$error = 1;
}
if (!isset($error)) {
if (is_file($path)) {
unlink($path);
} elseif (is_dir($path)) {
//$this->recursiveDelete($path);
}
}
}
А после этой строки добавим SQL запрос на выборку
$query = $this->db->query("SELECT p.image FROM " . DB_PREFIX . "product p WHERE p.product_id = '" . (int)$product_id . "'");
if($query->row){
$this->delete_image($query->row['image']);
$results = $this->getProductImages($product_id);
foreach ($results as $result) {
$this->delete_image($result['image']);
}
} Также мы подготовили модификатор для установки через админ-панель:



А для какой версии opencart это решение?
Для всех версий Opencart