2013-02-03 69 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