Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Очистка таблицы от битых изображений


Recommended Posts

Здравствуйте!

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

Opencart 3.0.0.2

Надіслати
Поділитися на інших сайтах


2 минуты назад, ZerG1 сказал:

После залива товаров на сайт не все картинки загрузились на сервер, и залить их нет возможности

Ссылки с примерами расскажут больше.

  • +1 1
Надіслати
Поділитися на інших сайтах

http://prntscr.com/m4woxx

 

Где фотоапарат перечеркнутый, я удалил ссылку на картинку из базы вручную. Другой товар тоже надо удалить, чтоб вместо битой картинки оно тянуло для товаров "no image".
И таких товаров 300+, вручную каждый по групам искать не вариант

Надіслати
Поділитися на інших сайтах


Если у товара нет картинки и так будет no_image. И без ссылок по картинкам только гадать, что не так.

Надіслати
Поділитися на інших сайтах

6 минут назад, Tom сказал:

Если у товара нет картинки и так будет no_image. И без ссылок по картинкам только гадать, что не так.

 

Проблема в том что у товаров в базе ссылки забиты http://prntscr.com/m4wvjo а на сервере их нет.
Тем товарам к которым нет картинки на сервере надо задать значение null в базе.

Надіслати
Поділитися на інших сайтах


в контроллере, который вызывает товар для отображения (например контроллер модуля последние [latest]):

находим:

if ($result['image']) {

и заменяем на:

if ($result['image'] && file_exists(DIR_IMAGE . $result['image'])) {

тогда получится не просто проверка на наличие ссылки из базы но и наличие файла по указанному пути из базы, только в этом случае выводить будет изображение, в противном случае, под данное условие не попадает и соотв. будет выведен } else { - тоесть вывод изображения no_image

  • +1 1
Надіслати
Поділитися на інших сайтах

3 минуты назад, auditor сказал:

в контроллере, который вызывает товар для отображения (например контроллер модуля последние [latest]):

находим:


if ($result['image']) {

и заменяем на:


if ($result['image'] && file_exists(DIR_IMAGE . $result['image'])) {

тогда получится не просто проверка на наличие ссылки из базы но и наличие файла по указанному пути из базы, только в этом случае выводить будет изображение, в противном случае, под данное условие не попадает и соотв. будет выведен } else { - тоесть вывод изображения no_image

 

Отлично) для категорий получилось, но в товаре почему то не хочет работать.

Надіслати
Поділитися на інших сайтах


для товара находим 2-ва места в которых есть следующий код:

if ($product_info['image']) {

и заменяем на (это для главного изображения):

if ($product_info['image'] && file_exists(DIR_IMAGE . $product_info['image'])) {

а для доп. изображений, находим участок:

$data['images'][] = array(
					'popup' => $this->model_tool_image->resize($result['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_popup_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_popup_height')),
					'thumb' => $this->model_tool_image->resize($result['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_additional_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_additional_height'))
				);

и заменяем на:

if ($result['image'] && file_exists(DIR_IMAGE . $result['image'])) {
					$my_dop_image = $result['image'];
				} else {
					$my_dop_image = 'no_image.png';
				}
				$data['images'][] = array(
					'popup' => $this->model_tool_image->resize($my_dop_image, $this->config->get('theme_' . $this->config->get('config_theme') . '_image_popup_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_popup_height')),
					'thumb' => $this->model_tool_image->resize($my_dop_image, $this->config->get('theme_' . $this->config->get('config_theme') . '_image_additional_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_additional_height'))
				);

p.s. для очистки "битых ссылок" (удаление из базы путей, файлов которых нет на сервере), то надо дополнительно в админке прописать блок, с перебором поля рисунок таблицы товара, объединив массив с таблицей доп. рисунков, и добавить аналогичную проверку на file_exists и в случае не нахождения файла по пути - DELETE запись из базы по ключу product_id

  • +1 1
Надіслати
Поділитися на інших сайтах

перепроверил, все верно, посмотрите и вы, правильно ли заменили учаток выше, на:

if ($result['image'] && file_exists(DIR_IMAGE . $result['image'])) {
		$my_dop_image = $result['image'];
	} else {
		$my_dop_image = 'no_image.png';
	}
	$data['images'][] = array(
		'popup' => $this->model_tool_image->resize($my_dop_image, $this->config->get('theme_' . $this->config->get('config_theme') . '_image_popup_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_popup_height')),
		'thumb' => $this->model_tool_image->resize($my_dop_image, $this->config->get('theme_' . $this->config->get('config_theme') . '_image_additional_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_additional_height'))
	);

если ошибка не пропадает, то добавьте, пожалуйста, под спойлер, код модифицированного файла, что бы увидеть строку 317 с ошибкой или отпишите в ЛС, с указанием данных для подключения по TeamViewer

Надіслати
Поділитися на інших сайтах

  • 2 years later...
В 09.01.2019 в 16:32, auditor сказал:

перепроверил, все верно, посмотрите и вы, правильно ли заменили учаток выше, на:


if ($result['image'] && file_exists(DIR_IMAGE . $result['image'])) {
		$my_dop_image = $result['image'];
	} else {
		$my_dop_image = 'no_image.png';
	}
	$data['images'][] = array(
		'popup' => $this->model_tool_image->resize($my_dop_image, $this->config->get('theme_' . $this->config->get('config_theme') . '_image_popup_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_popup_height')),
		'thumb' => $this->model_tool_image->resize($my_dop_image, $this->config->get('theme_' . $this->config->get('config_theme') . '_image_additional_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_additional_height'))
	);

если ошибка не пропадает, то добавьте, пожалуйста, под спойлер, код модифицированного файла, что бы увидеть строку 317 с ошибкой или отпишите в ЛС, с указанием данных для подключения по TeamViewer

 

Тоже необходимо скрыть изображения которых нет, сделал по вашей инструкции. Редактировал файл /catalog/controller/product.php. В итоге изображения заменились на no_image. А как сделать чтобы они вообще не отображались? Спасибо

Спойлер

 

До

1256394275_-2.jpg.c76408edc02f5a6ae61618c5c216f286.jpg

После

1064161786_-3.jpg.2b447703b323893f041650d01c626f11.jpg

 

 

Надіслати
Поділитися на інших сайтах


if ($result['image'] && file_exists(DIR_IMAGE . $result['image'])) {
		$my_dop_image = $result['image'];
	
	$data['images'][] = array(
		'popup' => $this->model_tool_image->resize($my_dop_image, $this->config->get('theme_' . $this->config->get('config_theme') . '_image_popup_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_popup_height')),
		'thumb' => $this->model_tool_image->resize($my_dop_image, $this->config->get('theme_' . $this->config->get('config_theme') . '_image_additional_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_additional_height'))
	);
}
  • +1 1
Надіслати
Поділитися на інших сайтах

2 часа назад, chukcha сказал:


if ($result['image'] && file_exists(DIR_IMAGE . $result['image'])) {
		$my_dop_image = $result['image'];
	
	$data['images'][] = array(
		'popup' => $this->model_tool_image->resize($my_dop_image, $this->config->get('theme_' . $this->config->get('config_theme') . '_image_popup_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_popup_height')),
		'thumb' => $this->model_tool_image->resize($my_dop_image, $this->config->get('theme_' . $this->config->get('config_theme') . '_image_additional_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_additional_height'))
	);
}

То что нужно, большое спасибо!!!

Змінено користувачем Aleksei_N
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.