2

製品ページにライトボックスがあるカスタム 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}'";
?>

何か案は?

4

1 に答える 1

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 } ?>

次に、必要なサイズの画像のURLを含むjsオブジェクトが作成されます。それをライトボックス/ファンシーボックスなどに渡します。

ニーズに合わせてこれを調整する必要があります。主に、使用できるjsオブジェクトを作成するという観点からです。

Mageでの画像のサイズ変更に関する情報:http: //www.magthemes.com/magento-blog/customize-magentos-image-resize-functionality/

于 2013-02-03T00:32:30.407 に答える