Magento 2: mantener la relación de aspecto de la imagen del producto

8

Estoy trabajando con Magento 2 Category Page.

Pero no podía saber cómo mantener las relaciones de aspecto de la imagen del producto.

En magento 1.x, puedo obtener la imagen src para usar el siguiente código.

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

Pero en magento 2, puedo configurar los tamaños de imagen en el archivo /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>

Traté de ingresar la altura con "auto", pero no funcionó.

También intenté ingresar solo el ancho, tampoco funcionó.

Y encontré el siguiente código para mostrar imágenes de productos en el archivo 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>

¿Alguien sabe cómo mostrar las imágenes del producto con las relaciones de aspecto de imagen de Keep?

Juan
fuente

Respuestas:

9

Puedes usar el siguiente código.

<?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; ?>" />
Miguel
fuente
¿Puedes explicar las diferencias de código entre @Dmitry y @SH Patel?
Suresh Chikani
+1 por esto. Con esto también puede cambiar el tamaño de la imagen en las plantillas de correo electrónico.
Chirag Parmar
2

Puede configurar "Mantener la relación de aspecto de la imagen del producto" en magento2 como magento 1.x usando ayuda de imagen.

Puede usar el ayudante de imagen de esta manera en el archivo 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
fuente
¿Deberíamos poner la altura primero og ancho primero en la resize()función?
Magento Learner