Magento 2 - Mantenha a proporção da imagem do produto

8

Estou trabalhando com a página de categoria Magento 2.

Mas não sabia como manter as proporções da imagem do produto.

No magento 1.x, posso obter a imagem src para usar o código abaixo.

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

Mas no magento 2, eu posso definir os tamanhos das imagens no arquivo /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>

Tentei inserir a altura com "auto", mas não funcionou.

Também tentei inserir apenas largura, mas também não funcionou.

E encontrei abaixo o código para mostrar imagens de produtos no arquivo 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>

Alguém sabe como mostrar as imagens do produto com manter as proporções da imagem?

John
fonte

Respostas:

9

Você pode usar o código abaixo.

<?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; ?>" />
Mike
fonte
Você pode explicar as diferenças de código entre @Dmitry e @SH Patel?
Suresh Chikani # 8/15
+1 para isso. Com isso, você também pode redimensionar a imagem em modelos de email.
Chirag Parmar 21/01
2

Você pode definir "Manter a proporção da imagem do produto" no magento2 como no magento 1.x usando o auxiliar de imagem.

Você pode usar o auxiliar de imagem como este no arquivo de lista: 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'); ?>" />
Suresh Chikani
fonte
Devemos colocar a altura primeiro e a largura primeiro na resize()função?
Aprendiz Magento