2013-02-03 40 views
2

我正在使用自定义magento模板,它在产品页面上有一个灯箱。我可以在配置中将lightbox的最大宽度/高度设置为屏幕的百分比(即95%)。问题是,它使用这个作为默认值,所以即使它是一个非常小的图像,它会伸展到屏幕的95%,并导致图像像素化。Magento自定义模板 - 编辑灯箱大小

我希望它使用此百分比作为最大值,但如果实际图像小于此值,则会使用实际图像尺寸。

我发现这个代码,我想我可能需要编辑一个文件,但我不知道如何去这在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

我发现这个代码,可以帮助但它似乎只在view.phtml文件中使用,而不是我想编辑的文件时工作。 ($ _产品,'图像') - > getOriginalHeight(); – a1anm

回答

1

我这样做的方式是加载相对较大的图像作为基础产品图像。当产品/视图呈现时,构建一个包含大图片URL的js对象,以及您需要的任何缩略图。然后,您的灯箱应该使用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对象。将其转换为Lightbox/fancybox等。

您一定要根据自己的需求量身定做 - 主要是创建一个可以使用的js对象。

上调整图像大小的一些信息在法师: http://www.magthemes.com/magento-blog/customize-magentos-image-resize-functionality/

+0

不幸的是,我们没有足够大的图像来显示某些产品,所以如果它小于屏幕的95%,我们需要它加载原始大小的图像,而不会将其扩大。 – a1anm

+0

啊。这是一个问题。我确信有抓取原始高度的方法(您的代码看起来很有前途)。我仍然建议构建一个数据obj传递给你的灯箱。 – Bosworth99