Magento 2-製品イメージのアスペクト比を維持


8

Magento 2のカテゴリページを使用しています。

しかし、製品の画像のアスペクト比を維持する方法がわかりませんでした。

magento 1.xでは、以下のコードで使用するイメージsrcを取得できます。

<?php
    echo $this->helper('catalog/image')
    ->init($_product, 'small_image')
    ->constrainOnly(FALSE)
    ->keepAspectRatio(TRUE)
    ->keepFrame(FALSE)
    ->resize(300);
?>

しかし、magento 2では、/ app / design / frontend / Magento / luma / etc / view.xmlファイルで画像サイズを設定できます。

<image id="category_page_grid" type="small_image">
    <width>240</width>
    <height>300</height>
</image>
<image id="category_page_list" type="small_image">
    <width>240</width>
    <height>300</height>
</image>

「auto」で高さを入力しようとしたのですがうまくいきませんでした。

また、幅だけを入力しようとしてもうまくいきませんでした。

そして、Magento_Catalog / templates / product / list.phtmlファイルに製品画像を表示するためのコードを以下に見つけました。

<?php
    $productImage = $block->getImage($_product, $image);
?>
<a href="<?php echo $_product->getProductUrl() ?>" class="product photo product-item-photo" tabindex="-1">
    <?php echo $productImage->toHtml(); ?>
</a>

画像の縦横比を維持したまま商品の画像を表示する方法を知っている人はいますか?

回答:


9

以下のコードを使用できます。

<?php
    //$image = 'category_page_grid' or 'category_page_list';
    $_imagehelper = $this->helper('Magento\Catalog\Helper\Image');

    $productImage = $_imagehelper->init($_product, $image)->constrainOnly(FALSE)->keepAspectRatio(TRUE)->keepFrame(FALSE)->resize(400)->getUrl();
?>

<img src="<?php echo $productImage; ?>" />

@Dmitryと@SH Patelのコードの違いを説明できますか?
Suresh Chikani 2015年

+1。これにより、メールテンプレートの画像のサイズも変更できます。
Chirag Parmar

2

イメージヘルパーを使用して、magento 1.xのようにmagento2で「製品イメージのアスペクト比を維持」を設定できます。

リストファイルで次のようなイメージヘルパーを使用できます。app \ code \ Magento \ Catalog \ view \ frontend \ templates \ product \ list.phtml

$_Imagehelper = $this->helper('Magento\Catalog\Helper\Image');

<img src="<?php echo $_Imagehelper->init($_product, 'small_image')->keepAspectRatio(true)->resize('height', 'width'); ?>" />

resize()関数の最初に高さ、または幅を最初に配置する必要がありますか?
Magento Learner
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.