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?

TommyK
quelle

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>
Jaanek Liiskmaa
quelle
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;
Mr. Lewis
quelle
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
1

Sie können diesen hier genannten Trick ausführen:

/programming/34082459/magento2-add-product-attribute-as-media-image

Aber mit einer Sache, die dort nicht erwähnt wird, können Sie einfach etwas tun: $_product->getAttributeCode()Es wird funktionieren und Ihnen den Wert geben.

Als das zu tun

$product->getCustomAttribute( 'attribute_code' )->getValue() 

wird null zurückgeben;

Juliano Vargas
quelle