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?

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

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

Faut-il mettre la hauteur en premier et la largeur en premier dans la resize()fonction?
Magento Learner
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.