我正在使用自定义magento模板,该模板在产品页面上有一个灯箱。我可以将配置中灯箱的最大宽度/高度设置为屏幕的百分比(即95%)。问题是它然后使用它作为默认值,所以即使它是一个非常小的图像,它会将其拉伸到95%的屏幕并导致图像像素化。
我希望将此百分比仅用作最大值,但如果实际图像小于此值,则会使用实际图像尺寸。
我找到了一个包含此代码的文件,我想我可能需要编辑,但我不知道如何在Magento中进行此操作:
<?php
$maxWidth = $zoomHelper->getCfg('lightbox/max_width');
$maxHeight = $zoomHelper->getCfg('lightbox/max_height');
$cfg = '';
if ($maxWidth)
$cfg .= ", maxWidth:'{$maxWidth}'";
if ($maxHeight)
$cfg .= ", maxHeight:'{$maxHeight}'";
?>
有什么想法吗?
答案 0 :(得分:1)
我这样做的方法是加载相对较大的图像作为基本产品图像。在渲染产品/视图时,构建一个js对象,其中包含大图像的URL以及您需要的任何缩略图。然后,您的灯箱应使用js对象作为数据源。
media.phtml
<script> var images = {};</script>
<?php $_images = Mage::getModel('catalog/product')->load($_product->getId())->getMediaGalleryImages(); ?>
<?php if($_images){?>
<?php $i=0; foreach($_images as $_image){ $i++; ?>
<img src="<?php echo $this->helper('catalog/image')->init($_product, 'thumbnail', $_image->getFile())->resize(108,90); ?>" alt="<?php echo $this->htmlEscape($_image->getLabel());?>" title="<?php $this->htmlEscape($_image->getLabel());?>" /><?php } ?>
<script> images.bigsrc = "<?php echo $this->helper('catalog/image')->init($_product, 'thumbnail', $_image->getFile())->resize(800,800); ?>" </script>
<?php } ?>
然后,您有一个js对象,其中包含您需要的任何大小的图像的URL。将其传递到lightbox / fancybox等。
你肯定必须根据自己的需要定制它 - 主要是创建一个可以使用的js对象。
有关调整图像大小的一些信息: http://www.magthemes.com/magento-blog/customize-magentos-image-resize-functionality/