चयनित गुणन विशेषता का मान प्राप्त करें


14

निम्नलिखित "कार" उत्पाद लें: वोक्सवैगन गोल्फ

इसमें car_optionsनिम्नलिखित संभावित विकल्पों और उनके आईडी के साथ एक मल्टीसेलेक्ट विशेषता है :

  • एयरको (आईडी = 123) का चयन किया
  • रेडियो (आईडी = 124) चयनित
  • ब्लूटूथ (आईडी = 125)
  • नेविगेशन (आईडी = 126)

इस उत्पाद के लिए रेडियो और एयरको का चयन किया जाता है। मैं उन दो मूल्यों (रेडियो, एयरको) को कैसे प्राप्त कर सकता हूं और उन्हें प्रदर्शित कर सकता हूं। $ _product दिया गया है।

जवाबों:


19

इसे इस्तेमाल करे:

echo $_product->getResource()->getAttribute('car_options')->getFrontend()->getValue($_product);

मुझे कोई आउटपुट नहीं मिलता है! यह एक ड्रॉपडाउन नहीं है, लेकिन एक मल्टीसेप्ट विशेषता है!
SPRBRN

यह अभी भी एक बहुस्तरीयता के साथ काम करना चाहिए, मैंने बस इसे स्वयं करने की कोशिश की। कोशिश करें var_dump($_product->getData('car_options');और आउटपुट की जाँच करें। यह एक अल्पविराम से अलग स्ट्रिंग होना चाहिए, अगर ऐसा नहीं है तो मैं केवल कल्पना कर सकता हूं कि एक 3 पार्टी मॉड्यूल हस्तक्षेप कर रहा है।
मेयर

फिर भी कोई आउटपुट नहीं। हम कई मॉड्यूल का उपयोग करते हैं, लेकिन मुझे ऐसे किसी भी उपकरण के बारे में पता नहीं है जो विशेषताओं के साथ खिलवाड़ करता है।
SPRBRN

यदि $_product->getData('car_options')NULL लौटाता है, तो इसका मतलब है कि यह आपके उत्पाद संग्रह में नहीं जोड़ा गया है। हमें इस बारे में और जानने की आवश्यकता होगी कि आप इस विशेषता को कहाँ तक
पहुँचाना चाहते हैं

मुझे एक समाधान मिला है - मेरा उत्तर देखें।
SPRBRN

2
$ ObjectManager = \ Magento \ Framework \ App \ ObjectManager :: getInstance (); $ उत्पाद = $ objectManager-> get ('Magento \ Catalog \ Model \ Product') -> लोड ($ product_id);

$ विशेषता = $ उत्पाद-> getResource () -> getAttributeRawValue ($ product_id, 'my_custom_attribute_code', $ storeid);

यह काम करता है .. आशा है कि यह आपकी मदद करेगा ..


बहुत बढ़िया ... यह एक आकर्षण की तरह काम करता है !!!!!
स्नेहा पांचाल

जानकर खुशी हुई :) @ स्नेहांचल
समीर भयानी

0

निम्नलिखित कोड

  1. इस उत्पाद के लिए चयनित विकल्पों का मूल्य आईडी लौटाता है: 123,124
  2. एक सरणी में बदल जाता है: सरणी (123,124)
  3. फिर उन विकल्पों के लेबल को खोजता है: 123 => एयरको और 124 => रेडियो
  4. और पाठ स्ट्रिंग में मान लौटाता है: एयरको, रेडियो
$ _attribute_code = 'car_options';
$ car_options_csv = Mage :: getResourceModel ('कैटलॉग / उत्पाद') -> getAttributeRawValue ($ productId, $ _attribute_code, $ storeId); // रिटर्न: 123,124
$ car_options = विस्फोट (',', $ car_options_csv);
$ विशेषता = मेज़ :: getResourceModel ('eav / unit_attribute') -> getIdByCode ('कैटलॉग_प्रोडक्ट', $ _ विशेषता_कोड);
$ विशेषता = दाना :: getModel ('कैटलॉग / रिसोर्स_एवी_एटवर्ट') -> लोड ($ विशेषताआईड);
$ विशेषता = $ विशेषता -> getSource () -> getAllOptions ();

$ रिस = '';
foreach ($ विशेषता के रूप में $ a)
{
    $ l = $ [['लेबल'];
    $ m = $ [['मूल्य];
    अगर (स्ट्रेलन (ट्रिम ($ l))> 0 && in_array ($ m, $ car_options)
    {
        $ रेस। = ट्रिम ($ एल)। ',';
    }
}
प्रतिध्वनि पदार्थ ($ res, 0, -2);

आउच - आप आमतौर पर उस सड़क से नीचे नहीं जाना चाहते हैं। खासकर जब से मेयर का उत्तर ठीक काम करता है। मुझे यकीन नहीं है कि आप मैगेंटो की अनुवाद प्रणाली को इस तरह से दरकिनार नहीं कर रहे हैं - हालांकि जाँच नहीं की गई है।
वर्कफ़्लो

0

धन्यवाद @Mayers, उसका समाधान बहुत अच्छा है कि मूल getAttributeText को ओवरराइड न करें:

 public function getAttributeText($attributeCode)  
 {
    return $this->getResource()
        ->getAttribute($attributeCode)
        ->getFrontend()
        ->getValue($this);
 }

और साथ ही ग्राहक मॉडल में जोड़ने के लिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.