2012-08-16 6 views
15

Ich möchte Basis Produktbild in Magento zu Größe ändern und im Warenkorb Seitenleiste anzeigen. dieseErhalten Sie Basisproduktbild in Magento

Unfortunatelly:

echo $this->helper('catalog/image')->init($_product, 'image')->resize(38, 38); 

druckt Magento Platzhalter-Bild.

Das Basisbild ist für dieses Produkt richtig eingestellt. Kleines Bild und Thumbnail funktioniert super.

Keine Ahnung, was vor sich geht.

EDIT: Lösung: Erhalten Sie vollen Produktdaten auf diese Weise:

$_product = Mage::getModel('catalog/product')->load($_item->getProduct()->getId()); 

und dann verwenden, wie Sie wollen:

echo $this->helper('catalog/image')->init($_product, 'image')->resize(38, 38); 
+7

Willkommen bei Stack Overflow. Es ist absolut [OK, selbst zu antworten] (http://meta.stackexchange.com/questions/12513/should-i-not-answer-my-own-questions/12519#12519) Ihre eigene Frage, aber bitte posten Sie es als tatsächliche Antwort und nicht in der Frage selbst. Dies ermöglicht die Annahme/Annahme der Antwort und hilft uns, die Liste "Unbeantwortete" klarer zu halten. –

Antwort

3

Versuchen:

$this->helper('catalog/image')->init($_product, 'image')->keepFrame(false) 
->constrainOnly(true)->resize(38,38); 
22

Ich denke, du bist guckst ng hierfür:

echo Mage::getModel('catalog/product_media_config') 
     ->getMediaUrl($product->getImage()); //getSmallImage(), getThumbnail() 

Kredit sollte BenMarks, die diese answer gab gegeben.

+1

'$ product-> getImage()' gibt 'null' zurück. Mit kleinen und Thumbnails funktioniert. Ist es wichtig, dass es in ** Mage_Checkout_Block_Cart_Sidebar ** aufgerufen wird? – Dave

+0

Wenn Sie $ item als Produkt im Warenkorb haben, versuchen Sie zuerst: '$ product = Mage :: getModel ('Kategorie/Produkt') -> load ($ item-> getId()); Echo Mage :: getModel ('Katalog/product_media_config') -> getMediaUrl ($ produkt-> getImage()); ' –

+0

Jerzy, fast :) ' $ _product = Mage :: getModel ('catalog/product') -> load ($ _ item-> getProduct() -> getId()); ' Und schließlich funktioniert es wie beabsichtigt. Dzięki. – Dave

1

Kleines Bild und Thumbnail funktioniert gut.

Dann versuchen small_image statt Bild, wie folgt aus:

echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(38, 38); 
+2

Aber ich möchte Basisbild, nicht small_image. Es ist wichtig für mich. – Dave

+2

jemand weiß, warum 'Bild' wird nicht funktionieren? –

+0

@ marco sehe meine Antwort unter –

3

BEWUSST SEIN!

$this->helper('catalog/image')->init($_product, 'small_image')->resize(38, 38); 

ist Objekt, nicht url String selbst ein. Ja, Sie können es direkt mit echo verwenden, sollten es aber nicht var zuweisen. Zum Beispiel diese nicht funktionieren:

$images = array(); 
    foreach($products as $_product){ 
     $images[]=$this->helper('catalog/image')->init($_product, 'small_image') 
     ->resize(38, 38); 
    } 

Nach foreach, müssen Sie nur noch ein letztes Bild-URL gespeichert. Einfache Art und Weise ist wirklich String URL zu bekommen ist:

$images = array(); 
foreach($products as $_product){ 
    $images_obj = $this->helper('catalog/image')->init($_product, 'small_image') 
    ->resize(38, 38); 
    $images[] = (string)$images_obj; 
} 
+0

Vielen Dank! Hat mir eine Tonne geholfen. Anstatt zu addieren. "" Ich habe es in eine (Zeichenkette) umgewandelt. Nicht sicher, ob es die beste Praxis ist. –

+2

Ich denke, offensichtlichere Umwandlung in eine Zeichenkette ist Macht ein bisschen klarer sein - $ images [] = $ images_obj. '' >>> $ images [] = (string) $ images_obj; – Zippp

0
<img src='.$this->helper('catalog/image')->init($product, 'small_image')->resize(225, 225).' width=\'225\' height=\'225\'/> 
0

Magento Produktbild Zuweisen Variable

$product_image = Mage::helper('catalog/image')->init($productmodel,'small_image')->keepFrame(true)->resize(width,height).'';

Magento Produktbild Zuordnung

$products[] = Mage::helper('catalog/image')->init($productmodel,'small_image')->keepFrame(true)->resize(width,height).''; Objekt

Es funktioniert für mich ....

+0

Das Anhängen an eine Zeichenkette ist etwas mehrdeutig, es wäre schöner, sie stattdessen zu tippen.'$ product_image = (string) Mage :: helper ('Katalog/Bild') -> init ($ productmodel, 'small_image') -> keepFrame (true) -> Größe ändern (Breite, Höhe);' – Ben

+1

@Ben Ich habe hinzugefügte '. ''' am Ende überprüfe meine Antwort jetzt. –

0

Der Grund dafür ist, dass das Attribut image nicht in der Produktliste geladen ist. Normalerweise können Sie dies ändern, während Sie das Attribut bearbeiten, aber Sie können diese Einstellungen für dieses Attribut nicht bearbeiten. Ich denke, das ist, weil es ein Aktienattribut ist.

TLDR;

UPDATE catalog_eav_attribute SET used_in_product_listing = 1 WHERE attribute_id = 106; 

** Warnung, sollten Sie diese ^^^ Abfrage nicht ausführen, bis Sie Ihre image attribute_id für die catalog_product Einheit sicher sind, ist 106!

Einige Antworten sind darauf hindeutet, diese Methode:

$_product = Mage::getModel('catalog/product')->load($_item->getProduct()->getId()); 

echo $this->helper('catalog/image')->init($_product, 'image')->resize(38, 38); 

Sie dies nicht tun sollten! Dies liegt daran, dass Sie eine vollständige Produktladung durchführen werden! Dies ist nicht effizient und wird höchstwahrscheinlich innerhalb einer Schleife durchgeführt, die noch schlimmer ist! Entschuldigung für das Schreien!

ich in der Regel nicht dulden direkte DB Änderungen, aber in diesem Fall war es die einfachste Lösung für mich:

# First make sure we are using all the right IDs, who knows, I have seen some fubar'ed deployments 

SELECT entity_type_id FROM eav_entity_type WHERE entity_type_code = 'catalog_product'; 
# 10 
SELECT attribute_id FROM eav_attribute WHERE attribute_code = 'image' AND entity_type_id = 10; 
# 106 

# Now that we know the exact attribute_id.... 
UPDATE catalog_eav_attribute SET used_in_product_listing = 1 WHERE attribute_id = 106; 

Jetzt sind die image Attributdaten automatisch auf dem Produkt geladen werden Seiten Auflistung, dann können Sie Greifen Sie darauf wie folgt zu:

Der beste Teil ist, dass Sie nicht das gesamte Produkt in einer Schleife laden! TUN SIE DAS NICHT ALLES

** Außerdem, weil ich weiß, dass ich Leute sagen werde, dass dies nicht die Magento-Methode ist, wäre die Alternative, ein Modul mit einem SQL-Setup-Skript zu erstellen, das den Befehl ausführt .