Конфигурируемые образцы меняют размер изображения

Я пытаюсь реализовать настраиваемые образцы в пользовательской теме. Пока что все работает нормально, но я не могу найти, где изменить параметры по умолчанию для замененного изображения. В списке товаров каталога (list.phtml) я использую пользовательские настройки, примененные к изображениям

<img id="product-collection-image-<?php echo $_product->getId(); ?>" src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->constrainOnly(FALSE)->keepAspectRatio(TRUE)->keepFrame(FALSE)->resize(210,304); ?>"/>

Когда я меняю изображение с помощью настраиваемых образцов, я получаю правильное изображение выбранного параметра, но замененное изображение получает параметры по умолчанию, поэтому оно имеет размер по умолчанию (210×210) и имеет белые границы слева и справа.
Я хотел бы узнать, где генерируется новое изображение, чтобы настроить его в соответствии с размером каталожных изображений.

[РЕДАКТИРОВАТЬ]

Я включил настраиваемую функциональность образцов в свою собственную тему. Работает точно так же, как и в теме RWD. Итак, у меня активированы образцы цветов для включения в каталог. Когда я нажимаю на цвет, основное изображение товара (мы находимся в каталоге, а не на странице товара) заменяется тем, которое назначено на этикетку. Точно такая же функциональность, как и в теме RWD. Проблема в том, что в моей теме я использую определенный размер изображения с опциями keepAspectRatio (TRUE) и keepFrame (FALSE). Когда я нажимаю образец, назначенное изображение метки заменяется на исходное изображение. Что в порядке. Проблема состоит в том, что это измененное изображение генерируется с параметрами по умолчанию — особенно keepFrame (TRUE), который именно то, что я хочу отключить, потому что по этой причине изображение имеет размер по умолчанию 210×210 вместо 210×304 и имеет белые границы слева и справа. Но не знаю где 🙂

[Редактировать 2]
ОК, вроде нашел. Он находится в app / code / core / configurableSwatches / Block / Catalog / Media / Js / Abstract.php

публичная функция isKeepFrame ()

есть условие, если getMode == ‘grid’ они устанавливают keepFrame == true, для чего я вообще не вижу причин. В любом случае, установка его в false решила все мои проблемы с изображениями. Но так как я не хочу менять основные файлы, есть ли способ изменить настройки на False только для моей темы?

1

Решение

Я тоже получал белую рамку вокруг своих изображений, когда пытался установить catalog/product_image/small_width в 400 при использовании настраиваемых образцов.

Моя работа была изменить app/code/local/Mage/ConfigurableSwatches/Helper/Mediafallback.php чтобы $keepFrame всегда будет ложным

protected function _resizeProductImage($product, $type, $keepFrame, $image = null, $placeholder = false)
{
// BEGIN EDIT
$keepFrame = false;
// END EDIT
$hasTypeData = $product->hasData($type) && $product->getData($type) != 'no_selection';
if ($image == 'no_selection') {
$image = null;
}
if ($hasTypeData || $placeholder || $image) {
$helper = Mage::helper('catalog/image')
->init($product, $type, $image)
->keepFrame(($hasTypeData || $image) ? $keepFrame : false)  // don't keep frame if placeholder
;

$size = Mage::getStoreConfig(Mage_Catalog_Helper_Image::XML_NODE_PRODUCT_BASE_IMAGE_WIDTH);
if ($type == 'small_image') {
$size = Mage::getStoreConfig(Mage_Catalog_Helper_Image::XML_NODE_PRODUCT_SMALL_IMAGE_WIDTH);
}
if (is_numeric($size)) {
$helper->constrainOnly(true)->resize($size);
}
return (string)$helper;
}
return false;
}

Можно подумать, что настройка configurableswatches/catalog/media/js.phtml шаблон, настройка $this->getProductImageFallbacks(false) будет работать, но мне не повезло с этим.

Теперь мои изображения отображаются на 340px (не 400 по какой-то причине), но, по крайней мере, нет белой границы.

0

Другие решения

Других решений пока нет …