Magento 2 - сохранить соотношение сторон изображения продукта

8

Я работаю с Magento 2 Category Page.

Но я не мог знать, как сохранить пропорции изображения продукта.

В magento 1.x я могу заставить изображение использовать код ниже.

<?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?
Суреш Чикани
+1 за это. При этом вы можете изменить размер изображения в шаблонах электронной почты также.
Чираг Пармар
2

Вы можете установить «Сохранять пропорции изображения продукта» в magento2, как magento 1.x, используя помощник изображений.

Вы можете использовать изображение помощника, как это в файле списка: app \ code \ Magento \ Catalogue \ 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