Abrufen eines benutzerdefinierten Attributbilds


8

Magento 2 Frage hier:

Ich habe ein benutzerdefiniertes Attribut (Medientyp) mit dem Namen 'bicy_range_image' erstellt und versucht, im Kern zu googeln und zu suchen und alles, was ich konnte, um das Bild mit einer benutzerdefinierten Größe und dergleichen zu erhalten, kann aber nicht den richtigen Ansatz finden .

Ich kann es als Text bekommen, aber das ist natürlich nicht genug, also wird es nicht gekürzt:

$productImage = $product->getCustomAttribute( 'bike_range_image' );

Einige Beispiele in Themen, die es gibt, legen nahe, dass ich dies tue:

$this->helper('Magento\Catalog\Helper\Image')->init($product, 'bike_range_image');

Dies gibt mir jedoch ein riesiges Magento \ Catalog \ Helper \ Image-Objekt, das nicht die richtigen Daten zu haben scheint. (Ich habe das richtige Produkt, wenn Sie sich fragen).

Hat jemand ein paar Hinweise für mich?

Antworten:


18

Ich denke, Sie möchten es in einer .phtml-Datei tun. Versuchen Sie es auf diese Weise

<?php
$productImageAttr = $product->getCustomAttribute( 'bike_range_image' );
$productImage = $this->helper('Magento\Catalog\Helper\Image')
    ->init($product, 'bike_range_image')
    ->setImageFile($productImageAttr->getValue());
?>

und dann in img tag

<img src="<?php echo $productImage->getUrl() ?>" alt="<?php echo $block->escapeHtml($product->getTitle()) ?>" />

Die Bildgröße kann in einer XML-Datei definiert werden, z. B. view.xml

<media>
    <images module="Magento_Catalog">
        <image id="bike_range_image" type="thumbnail">
            <width>100</width>
            <height>100</height>
        </image>
    </images>
</media>

Es ist eine Weile her, aber ja, am Ende hat es so gemacht. Ich kann es noch nicht abstimmen, also bitte jemand anderes!
TommyK

1
$product->getCustomAttribute('bike_range_image')ist NULL in Katalogkategorieseiten, wenn $productvon$block->getLoadedProductCollection()
LucScu

2

Verwenden Sie den folgenden Code:

$value = $_product->getCustomImage();
if(isset($value) && $value != 'no_selection'):
     $imageUrl = Mage::getHelper('catalog/image')->init($_product,'custom_image');
      echo "<img src='".$imageUrl."' />";
endif;

Das ist Magento 1-Code, aber ich habe es trotzdem so geschafft: $value = $product->getBikeRangeImage(); Dies funktioniert jedoch noch nicht: $value = $product->getBikeRangeImage(); if( isset($value) && $value != 'no_selection' ): echo $this->helper( 'Magento\Catalog\Helper\Image' )->init( $product, 'bike_range_image' )->resize( 310 ); endif; Das gibt mir einen Fehler, der besagt, dass ein Objekt anstelle einer URL zurückgegeben wird, wie es sollte. Irgendeine Idee?
TommyK

Kann jemand ein Licht darauf werfen, wie ich ein Bild für ein Dropdown-Attribut aufrufen kann? Danke
roger

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.