Magento 2 - Mantieni proporzioni immagine prodotto


8

Sto lavorando con la pagina delle categorie di Magento 2.

Ma non sapevo come mantenere le proporzioni dell'immagine del prodotto.

In magento 1.x, posso ottenere l'immagine src da usare sotto il codice.

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

Ma in Magento 2, posso impostare le dimensioni dell'immagine nel file /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>

Ho provato a inserire l'altezza con "auto", ma non ha funzionato.

Ho anche provato a inserire solo la larghezza, ma non ha funzionato.

E ho trovato sotto il codice per mostrare le immagini dei prodotti nel file 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>

Qualcuno sa come mostrare le immagini dei prodotti mantenendo le proporzioni delle immagini?

Risposte:


9

Puoi usare il codice qui sotto.

<?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; ?>" />

Puoi spiegare le differenze di codice tra @Dmitry e @SH Patel?
— Suresh Chikani,

+1 per questo. Con questo puoi ridimensionare l'immagine anche nei modelli di email.
— Chirag Parmar,

2

Puoi impostare "Mantieni proporzioni immagine prodotto" in magento2 come magento 1.x usando l'helper immagine.

È possibile utilizzare l'helper immagine in questo modo nel file elenco: 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'); ?>" />

Dovremmo mettere prima l'altezza o la larghezza prima nella resize()funzione?
— Magento Learner,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.