Jump to content
Sign in to follow this  
ZerG1

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

Recommended Posts

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

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

Opencart 3.0.0.2

Share this post


Link to post
Share on other sites
2 минуты назад, ZerG1 сказал:

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

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

  • +1 1

Share this post


Link to post
Share on other sites

http://prntscr.com/m4woxx

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
6 минут назад, Tom сказал:

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

 

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

Share this post


Link to post
Share on other sites

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

находим:

if ($result['image']) {

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

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

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

  • +1 1

Share this post


Link to post
Share on other sites
3 минуты назад, auditor сказал:

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

находим:

if ($result['image']) {

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

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

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

 

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

Share this post


Link to post
Share on other sites

для товара находим 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

Share this post


Link to post
Share on other sites

Буду пробовать) Спасибо!

Edited by ZerG1

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.