2012-08-16 27 views
15

में बेस उत्पाद छवि प्राप्त करें I Magento में आधार उत्पाद छवि को आकार देने और कार्ट साइडबार में प्रदर्शित करने के लिए प्राप्त करना चाहते हैं।Magento

Unfortunatelly इस:

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

प्रिंट Magento प्लेसहोल्डर छवि।

बेस छवि इस उत्पाद के लिए ठीक से सेट है। छोटी छवि और थंबनेल महान काम करता है।

कोई विचार नहीं कि क्या हो रहा है।

संपादित करें: समाधान: पूर्ण उत्पाद डेटा इस तरह से प्राप्त करें:

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

और फिर इसका इस्तेमाल के रूप में आप चाहते हैं:

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

स्टैक ओवरफ़्लो में आपका स्वागत है। यह बिल्कुल [स्व-उत्तर के लिए ठीक] है (http://meta.stackexchange.com/questions/12513/should-i-not-answer-my-own-questions/12519#12519) अपना स्वयं का प्रश्न, लेकिन कृपया इसे पोस्ट करें प्रश्न के अंदर वास्तविक जवाब के रूप में। यह उत्तर को वोट/स्वीकार करने की अनुमति देता है और हमें "अनुत्तरित" सूची को और स्पष्ट रखने में मदद करता है। –

उत्तर

3

प्रयास करें:

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

मुझे लगता है कि आप देख रहे हैं इस के लिए एनजी:

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

क्रेडिट BenMarks ने इस answer दिया को दी जानी चाहिए।

+1

'$ उत्पाद-> getImage()' रिटर्न 'शून्य 'प्राप्त करें। छोटे और थंबनेल कार्यों के साथ। क्या यह मायने रखता है ** Mage_Checkout_Block_Cart_Sidebar ** में? – Dave

+0

यदि आपके पास कार्ट में उत्पाद के रूप में $ आइटम है तो पहले प्रयास करें: '$ product = Mage :: getModel ('श्रेणी/उत्पाद') -> लोड ($ item-> getId()); गूंज दाना :: getModel ('सूची/product_media_config') -> getMediaUrl ($ उत्पाद-> getImage()); ' –

+0

जेर्जी, लगभग :) ' $ _product = दाना :: getModel ('सूची/उत्पाद') -> लोड ($ _ आइटम-> getProduct() -> getId()); ' और आखिरकार यह इरादे के रूप में काम कर रहा है। Dzięki। – Dave

1

छोटी छवि और थंबनेल बहुत अच्छा काम करता है।

फिर small_image छवि के बजाय कोशिश, इस तरह:

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

लेकिन मैं आधार छवि प्राप्त करना चाहता हूं, न कि छोटे_मेज। यह मेरे लिए मायने रखता है। – Dave

+2

कोई जानता है कि 'छवि' क्यों काम नहीं करेगी? –

+0

@ मार्को –

3

बारे में पता होना!

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

वस्तु, नहीं यूआरएल स्ट्रिंग यह आत्म है। हां, आप इसे सीधे गूंज के साथ उपयोग कर सकते हैं, लेकिन इसे var को असाइन नहीं करना चाहिए। उदाहरण के लिए इस अभ्यस्त काम:

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

foreach के बाद, आप केवल एक ही अंतिम छवि यूआरएल बचाया होगा। आसान तरीका प्राप्त करने के लिए कर रहा है वास्तव में स्ट्रिंग यूआरएल है:

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

से नीचे मेरा जवाब देखें बहुत बहुत धन्यवाद! मुझे एक टन में मदद मिली। इसे जोड़ने के बजाय। '' मैंने इसे एक (स्ट्रिंग) में परिवर्तित कर दिया। सुनिश्चित नहीं है कि यह सबसे अच्छा अभ्यास है। –

+2

मुझे लगता है कि स्ट्रिंग में अधिक स्पष्ट रूपांतरण हो सकता है थोड़ा और स्पष्ट हो - $ छवियां [] = $ images_obj। '' >>> $ छवियां [] = (स्ट्रिंग) $ images_obj; – Zippp

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

Magento उत्पाद छवि चर

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

Magento उत्पाद छवि बताए करने के लिए बताए वस्तु को

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

यह मेरे लिए काम करता है ....

+0

स्ट्रिंग में इसे जोड़ना कुछ हद तक संदिग्ध है, इसके बजाय इसे टाइपकास्ट करना अच्छा होगा।'$ product_image = (string) mage :: सहायक ('कैटलॉग/छवि') -> init ($ productmodel, 'small_image') -> keepFrame (true) -> आकार बदलें (चौड़ाई, ऊंचाई);' – Ben

+1

@ बेन मेरे पास है अंत में जोड़ा गया '' '' अंत में मेरा जवाब जांचें। –

0

ऐसा होने का कारण यह है कि image विशेषता उत्पाद प्रविष्टि में लोड नहीं होती है। आम तौर पर आप विशेषता संपादित करते समय इसे बदल सकते हैं, लेकिन आप इस विशेषता के लिए उन सेटिंग्स को संपादित नहीं कर सकते हैं। मुझे लगता है कि ऐसा इसलिए है क्योंकि यह एक स्टॉक विशेषता है।

टीएलडीआर;

UPDATE catalog_eav_attribute SET used_in_product_listing = 1 WHERE attribute_id = 106; 

** चेतावनी, तो आप इस ^^^ क्वेरी निष्पादित नहीं करना चाहिए जब तक आप कुछ कर रहे हैं catalog_product इकाई के लिए अपने image attribute_id 106 है!

कुछ जवाब इस विधि सुझाव दे रहे हैं:

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

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

आप ऐसा नहीं करना चाहिए! ऐसा इसलिए है क्योंकि आप एक पूर्ण उत्पाद लोड करेंगे! यह कुशल नहीं है, और संभवतः एक लूप के अंदर किया जा रहा है जो इससे भी बदतर है! चीखने के लिए खेद है!

मैं आमतौर पर प्रत्यक्ष डीबी संपादन को नज़रअंदाज़ नहीं है, लेकिन इस मामले में यह मेरे लिए सबसे आसान समाधान था:

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

अब image विशेषता डेटा स्वतः लिस्टिंग पृष्ठों उत्पाद पर लोड किया जाएगा, तो आप कर सकते हैं इस तरह इसे उपयोग:

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

सबसे अच्छी बात यह है कि आप एक पाश में पूरे उत्पाद लोड नहीं हो रहे है! कभी भी ऐसा न करें कि कभी भी

** इसके अलावा, क्योंकि मुझे पता है कि मैं लोगों को यह कहने जा रहा हूं कि यह Magento तरीका नहीं है, विकल्प एक मॉड्यूल बनाना होगा जिसमें एक SQL सेटअप स्क्रिप्ट है जो कमांड चलाती है ।