Удаление товара с привязанными к нему изображениями в Opencart

Дата: 01.03.2018 Просмотров: 1616 Комментарии: 0

В этой статье речь пойдет о том как удалять файлы изображений, привязанные к удаляемому товару. Дело в том что в 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']);
	}
}

Также мы подготовили модификатор для установки через админ-панель:

Скачать модификатор

Скачать - 4.1 KB

Комментарии

Написать комментарий


Популярные предложения