Php 可配置样例交换图像大小

Php 可配置样例交换图像大小,php,magento,configurable,Php,Magento,Configurable,我试图在自定义主题中实现可配置的样例。到目前为止,一切正常,但我找不到在哪里更改交换图像的默认参数。在目录产品列表(list.phtml)中,我使用应用于图像的自定义设置 <img id="product-collection-image-<?php echo $_product->getId(); ?>" src="<?php echo $this->helper('catalog/image')->init($_product, 'small_ima

我试图在自定义主题中实现可配置的样例。到目前为止,一切正常,但我找不到在哪里更改交换图像的默认参数。在目录产品列表(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); ?>"/>
helper('catalog/image')->init($_product,'small_image')->constraintonly(FALSE)->keepAspectRatio(TRUE)->keepFrame(FALSE)->resize(210304);?>"/>
当我使用可配置样例交换图像时,我会得到所选选项的正确图像,但交换的图像会得到默认参数,因此它具有默认大小(210x210),并且左右两侧都有白色边框。 我想找出新图像是在哪里生成的,以便将其调整到正确的目录图像大小

[编辑]

我在自定义主题中包含了可配置的色样功能。它的工作原理与RWD主题中完全相同。因此,我为目录列表激活了色样。当我单击产品的颜色主图像时(我们在目录列表中,而不是在产品页面中)与指定给标签的图像交换。实际上与RWD主题中的功能相同。问题是,在我的主题中,我使用特定的图像大小和keepAspectRatio(TRUE)和keepFrame(FALSE)选项。单击“样例”时,指定给标签图像的图像将替换为原始图像。这是正常的。问题是,此替换图像是使用默认参数生成的-尤其是keepFrame(TRUE)这正是我想要禁用的,因为这就是为什么图像的默认大小是210x210而不是210x304,并且左右两侧都有白色边框。但不知道在哪里:)

[编辑2] 好的,找到了。它位于app/code/core/configurableSwatches/Block/Catalog/Media/Js/Abstract.php中

公共函数isKeepFrame()


如果getMode='grid'有一个条件,他们将keepFrame==设置为true,对此我看不出任何理由。无论如何,将其设置为false解决了我所有的图像问题。但是,由于我不想更改核心文件,有没有办法仅将主题的此设置更改为false?

我在tried可在使用可配置样本时将目录/产品图像/小宽度设置为
400

我的工作是修改
app/code/local/Mage/ConfigurableSwatches/Helper/Mediafallback.php
,使
$keepFrame
始终为false

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),但至少没有白色边框。

在使用可配置样本时,当我尝试将
目录/产品图像/小宽度设置为
400
时,我的图像周围也有白色边框

我的工作是修改
app/code/local/Mage/ConfigurableSwatches/Helper/Mediafallback.php
,使
$keepFrame
始终为false

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)但至少没有白色边框。

您可以共享代码吗,这样我们可以帮助您更好地共享特定代码。也许我尝试在编辑中多解释一些。您可以共享代码吗,这样我们可以帮助您更好地共享特定代码。也许我尝试在编辑中多解释一些。