可配置样本交换图像调整大小

时间:2016-04-11 02:54:38

标签: php magento configurable

我正在尝试在自定义主题中实现可配置的样本。到目前为止一切正常,但我无法找到更改交换图像的默认参数的位置。在目录产品列表(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); ?>"/>

当我使用可配置样本交换图像时,我得到所选选项的正确图像,但交换图像获取默认参数,因此它带有默认大小(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?

1 个答案:

答案 0 :(得分:0)

当我在使用可配置色板时尝试将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),但至少没有白边。