TL, DR , आवश्यकता सूची उत्पाद के एक स्टॉक स्तर को श्रेणी उत्पाद सूची पृष्ठ पर प्रदर्शित करने की है, जो मैगेंटो के ढांचे का पालन करने वाले प्रदर्शन के साथ छोटे अतिरिक्त प्रश्नों / स्मृति के रूप में है।
स्केलेबिलिटी के लिए प्रीलोडिंग पर विनय कोप्प का लेख पढ़ने के बाद ।
प्रदर्शन उत्पाद झीलों के लिए कुछ अतिरिक्त प्रश्नों / भारों के साथ श्रेणी उत्पाद सूची पृष्ठों ( list.phtml ) पर इन्वेंट्री स्टॉक स्तरों को शामिल करने का सबसे अच्छा तरीका क्या है ?
मैं कुछ तरीकों से अवगत हूँ:
afterLoad ()media_gallery
अतिरिक्त प्रश्नों के बिना शामिल किए जाने केसाथ अच्छी तरह से काम करता है, हालांकि मैं इन्वेंट्री के साथ एक ही दृष्टिकोण को लागू करने में सफल नहीं रहा हूं।
$attributes = $_product->getTypeInstance(true)->getSetAttributes($_product);
$media_gallery = $attributes['media_gallery'];
$backend = $media_gallery->getBackend();
$backend->afterLoad($_product);
प्रत्यक्ष एसक्यूएलproduct_id
उदाहरण के लिए एक कुंजी के साथ संग्रह के समानांतर में आवश्यक डेटा इकट्ठा करने के लिए। लेकिन ढांचे के माध्यम से अधिक साधनों की तलाश है।
वर्तमान में मैं बस के stock_item
माध्यम से वस्तु लोड कर रहा हूँ :
$_product->load('stock_item')->getTotalQty();
जो काम करता है, लेकिन मैं संग्रह में सभी उत्पादों की इन्वेंट्री स्टॉक कुल प्राप्त करने के लिए और अधिक प्रश्नों को शामिल करता हूं।
...
__EAV_LOAD_MODEL__ (Mage_Catalog_Model_Product, id: stock_item, attributes: NULL)
__EAV_LOAD_MODEL__ (Mage_Catalog_Model_Product, id: stock_item, attributes: NULL)
__EAV_LOAD_MODEL__ (Mage_Catalog_Model_Product, id: stock_item, attributes: NULL)
...
अजीब तरह से, यह काम करता है। जादू Mage_Eav_Model_Entity_Abstract-> लोड ($ ऑब्जेक्ट, $ एंटिटी, $ विशेषताओं) में होता है। यदि $ विशेषताएँ खाली हैं, तो इसे loadAllAttribute ($ ऑब्जेक्ट) कहा जाएगा। इसलिए $ उत्पाद-> लोड ('ब्लाह') 'मीडिया_गैलरी' सहित सभी लापता विशेषताओं को लोड करेगा - विलियम ट्रान Nov 19 '14 4:45 बजे
पहले से लोड किए गए संग्रह में आवश्यक मान जोड़ें।
परत / फ़िल्टर में शीर्ष स्तर के उत्पादन संग्रह में आवश्यक डेटा जोड़ने का स्पष्ट सरल तरीका, सबसे अच्छा तरीका प्रतीत होगा।
मैंने एक ऑब्जर्वर addInventoryDataToCollection () Mage_CatalogInventory_Model_Observer में देखा कि ऐसा लगता है कि यह प्राप्त होगा, लेकिन एक कस्टम मॉड्यूल पर्यवेक्षक के लिए विधि जोड़ना संगत प्रतीत नहीं होता है।
<events>
<catalog_product_collection_load_after>
<observers>
<inventory>
<class>cataloginventory/observer</class>
<method>addInventoryDataToCollection</method>
</inventory>
</observers>
</catalog_product_collection_load_after>
</events>
जिसके परिणामस्वरूप:
चेतावनी: लाइन 71 पर foreach () /app/code/core/Mage/CatalogInventory/Model/Resource/Stock/Item/Collection.php पर अमान्य तर्क दिया गया