Porównaj ceny domen i usług IT, sprzedawców z całego świata

Uzyskaj podstawowy obraz produktu w Magento


Chcę otrzymywać

podstawowy

Obraz produktu Magento do zmiany rozmiaru i wyświetlania na pasku bocznym koszyka.
Niestety to:
echo $this->helper('catalog/image')->init($_product, 'image')->resize(38, 38);

drukuje obraz zastępczy Magento.
Obraz podstawowy jest poprawnie skonfigurowany dla tego produktu. Mały obraz i miniatura działają świetnie.
Nie mam pojęcia, co się dzieje.

EDIT:

decyzja:
Uzyskaj pełne dane produktów w ten sposób:
$_product = Mage::getModel('catalog/product')->load($_item->getProduct()->getId());

a następnie użyj go według własnego uznania:
echo $this->helper('catalog/image')->init($_product, 'image')->resize(38, 38);

Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Myślę, że szukasz tego:
echo Mage::getModel('catalog/product_media_config')
->getMediaUrl( $product->getImage() );//getSmallImage(), getThumbnail()

Aby otrzymać kredyt

BenMarks
https://stackoverflow.com/users/833795/benmarks
który to dał

odpowiedź
https://coderoad.ru/8288340/
.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Próbować:
$this->helper('catalog/image')->init($_product, 'image')->keepFrame(false)
->constrainOnly(true)->resize(38,38);
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:


BĄDŹ OSTROŻNY!

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

to jest

obiekt
, i

nie ciąg adresu URL

Samo. Tak, możesz go używać bezpośrednio z echo, ale nie musisz przypisywać go do var. Na przykład this

nie zadziała

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

Po każdym zapisaniu będziesz mieć tylko jeden obraz ostatniego adresu URL. Prostym sposobem na uzyskanie prawdziwego adresu URL jest:
$images = array();
foreach($products as $_product){
$images_obj = $this->helper('catalog/image')->init($_product, 'small_image')
->resize(38, 38);
$images[] = (string)$images_obj;
}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Dzieje się tak, ponieważ atrybut
image
nie został załadowany do listy produktów. Zwykle można to zmienić podczas edycji atrybutu, ale nie można zmienić tych ustawień dla tego atrybutu. Myślę, że dzieje się tak, ponieważ jest to atrybut giełdowy.
TLDR;
UPDATE catalog_eav_attribute SET used_in_product_listing = 1 WHERE attribute_id = 106;

** ostrzeżenie, nie należy uruchamiać tego zapytania ^^^, dopóki nie upewnisz się, że
image
attribute_id dla encji
catalog_product
to 106!
Odpowiedzi na niektóre pytania sugerują, że ta metoda:
$_product = Mage::getModel('catalog/product')->load($_item->getProduct()->getId());echo $this->helper('catalog/image')->init($_product, 'image')->resize(38, 38);

Nie powinieneś tego robić! Dzieje się tak, ponieważ będziesz robić pełne pobieranie produktu! Nie jest to wydajne i najprawdopodobniej odbywa się w pętli, co jest jeszcze gorsze! Przepraszam, że krzyczę!
Zwykle nie zgadzam się na bezpośrednią edycję bazy danych, ale w tym przypadku było to dla mnie najprostsze rozwiązanie:
# First make sure we are using all the right IDs, who knows, I have seen some fubar'ed deploymentsSELECT 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;

Dane atrybutu
image
zostaną teraz automatycznie załadowane na strony z listą produktów i możesz uzyskać do nich dostęp w następujący sposób:
echo $this->helper('catalog/image')->init($_product, 'image');

Najlepsze jest to, że nie ładujesz całego produktu w pętli! nigdy tego nie rób nigdy
** Ponadto, ponieważ wiem, że ludzie powiedzą, że to nie jest sposób Magento, alternatywą byłoby stworzenie modułu, który ma skrypt instalacyjny SQL, który uruchamia polecenie.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Mały obraz i miniatura działają świetnie.

Następnie wypróbuj small_image zamiast takiego obrazu:
echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(38, 38);
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

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

Anonimowy użytkownik

Potwierdzenie od:


Magento przypisuje zmienną obrazu produktu

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

Magento przypisanie obrazu produktu do obiektu

$products[] = Mage::helper('catalog/image')->init($productmodel,'small_image')->keepFrame(true)->resize(width,height).'';
To działa dla mnie ....

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się