Magento 2 - Conserver le rapport hauteur / largeur de l'image du produit

8

Je travaille avec la page de catégorie Magento 2.

Mais je ne savais pas comment conserver les proportions de l'image du produit.

Dans magento 1.x, je peux obtenir l'image src pour utiliser le code ci-dessous.

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

Mais dans magento 2, je peux définir les tailles d'image dans le fichier /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>

J'ai essayé de saisir la hauteur avec "auto", mais cela n'a pas fonctionné.

J'ai également essayé de ne saisir que la largeur, cela n'a pas fonctionné non plus.

Et j'ai trouvé ci-dessous le code pour afficher les images de produits dans le fichier 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>

Quelqu'un sait-il comment afficher les images du produit avec des proportions d'image Keep?

John
la source

Réponses:

9

Vous pouvez utiliser le code ci-dessous.

<?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
la source
Pouvez-vous expliquer les différences de code entre @Dmitry et @SH Patel?
Suresh Chikani,
+1 pour cela. Avec cela, vous pouvez également redimensionner l'image dans les modèles de courrier électronique.
Chirag Parmar
2

Vous pouvez définir "Conserver le rapport hauteur / largeur de l'image du produit" dans magento2 comme magento 1.x à l'aide de l'assistant d'image.

Vous pouvez utiliser l'image helper comme celle-ci dans le fichier de liste: 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
la source
Faut-il mettre la hauteur en premier et la largeur en premier dans la resize()fonction?
Magento Learner