Magento 2 - Produktbild-Seitenverhältnis beibehalten

8

Ich arbeite mit Magento 2 Category Page.

Aber ich konnte nicht wissen, wie ich die Seitenverhältnisse des Produktbildes beibehalten sollte.

In Magento 1.x kann ich das Bild src dazu bringen, den folgenden Code zu verwenden.

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

In Magento 2 kann ich die Bildgrößen in der Datei /app/design/frontend/Magento/luma/etc/view.xml festlegen.

<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>

Ich habe versucht, die Höhe mit "auto" einzugeben, aber es hat nicht funktioniert.

Ich habe auch versucht, nur width einzugeben, es hat auch nicht funktioniert.

Und ich habe unten Code zum Anzeigen von Produktbildern in der Datei Magento_Catalog / templates / product / list.phtml gefunden.

<?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>

Weiß jemand, wie man die Produktbilder mit Bildseitenverhältnissen zeigt?

John
quelle

Antworten:

9

Sie können den folgenden Code verwenden.

<?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
quelle
Können Sie Codeunterschiede zwischen @Dmitry und @SH Patel erklären?
Suresh Chikani
+1 dafür. Damit können Sie die Bildgröße auch in E-Mail-Vorlagen ändern.
Chirag Parmar
2

Sie können in Magento2 wie in magento 1.x mithilfe des Bildhelfers "Produktbild-Seitenverhältnis beibehalten" einstellen.

Sie können den Bild-Helper wie diesen in der Listendatei verwenden : 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
quelle
Sollten wir in der resize()Funktion zuerst die Höhe und dann die Breite angeben?
Magento Learner