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

Ограничить изображение товаров в категории только по ширине


Recommended Posts

Ocstore 3 

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

чтоб что то вроде такого было.

 

 

Schermata_2020-03-30_alle_17_28_58.png

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


я так понимаю надо от сюда /catalog/controller/product/category.php убрать получение высоты но если просто стререть, выползают ошибки

if ($result['image']) {
					$image = $this->model_tool_image->resize($result['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height'));
				} else {
					$image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height'));
				}

где картинка ресайзится в этом файле? 
/catalog/model/tool/image.php

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


26 minutes ago, borborich said:

где картинка ресайзится в этом файле? 
/catalog/model/tool/image.php

Не тот файл

./system/library/image.php

Только не стоит его трогать если не знаете что делете, так как он за весь ресайз

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


11 минут назад, LTRay сказал:

Не тот файл

./system/library/image.php

Только не стоит его трогать если не знаете что делете, так как он за весь ресайз

 

правильно я понимаю процесс, задаем в настройках магазина ширину и высоту, и ресайз определяет если устанавливаем заданную ширину, соответствует ли установленная высота в пределах заданной, если нет то ресайзит по высоте, так?

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


32 минуты назад, LTRay сказал:

Не тот файл

./system/library/image.php

Только не стоит его трогать если не знаете что делете, так как он за весь ресайз

 

ну да там происходит в целом ресайз, лучше туда не лезть, что то вроде простая задача а не могу понять и нагуглить ((

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


вот собственно функция ресайза всех картинок в файле /system/library/image.php

что тут выпилить чтоб картинка скейлилась просто пропорционально по высоте, не учитывая величину высоту что мы задали в настройках магазина?

/**
     * 
     *
     * @param	int	$width
	 * @param	int	$height
	 * @param	string	$default
     */
	public function resize($width = 0, $height = 0, $default = '') {
		if (!$this->width || !$this->height) {
			return;
		}

		$xpos = 0;
		$ypos = 0;
		$scale = 1;

		$scale_w = $width / $this->width;
		$scale_h = $height / $this->height;

		if ($default == 'w') {
			$scale = $scale_w;
		} elseif ($default == 'h') {
			$scale = $scale_h;
		} else {
			$scale = min($scale_w, $scale_h);
		}

		if ($scale == 1 && $scale_h == $scale_w && $this->mime != 'image/png') {
			return;
		}

		$new_width = (int)($this->width * $scale);
		$new_height = (int)($this->height * $scale);
		$xpos = (int)(($width - $new_width) / 2);
		$ypos = (int)(($height - $new_height) / 2);

		$image_old = $this->image;
		$this->image = imagecreatetruecolor($width, $height);

		if ($this->mime == 'image/png') {
			imagealphablending($this->image, false);
			imagesavealpha($this->image, true);
			$background = imagecolorallocatealpha($this->image, 255, 255, 255, 127);
			imagecolortransparent($this->image, $background);
		} else {
			$background = imagecolorallocate($this->image, 255, 255, 255);
		}

		imagefilledrectangle($this->image, 0, 0, $width, $height, $background);

		imagecopyresampled($this->image, $image_old, $xpos, $ypos, 0, 0, $new_width, $new_height, $this->width, $this->height);
		imagedestroy($image_old);

		$this->width = $width;
		$this->height = $height;
	}

 

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


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

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

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

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

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

Вхід

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

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

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

Important Information

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