मैं कार्ट में उत्पादों के आधार पर शिपिंग विधियों को प्रतिबंधित करने के लिए एक त्वरित और गंदे मॉड्यूल लिख रहा हूं। उदाहरण के लिए, यदि ग्राहक भोजन जोड़ता है, तो मैं केवल रातोंरात शिपिंग विधियों का चयन करना चाहता हूं। कुछ वाणिज्यिक एक्सटेंशन केवल ओवरकिल हैं और मुझे जिस तरह की अधिक कार्यक्षमता चाहिए।प्रोग्रामिंग रूप से सभी शिपिंग विधियों की सूची पुनर्प्राप्त करें
प्रत्येक उत्पाद में "शिपिंग क्लास" नामक एक ड्रॉपडाउन विशेषता होगी। व्यवस्थापक बैकएंड में इन शिपिंग क्लासेस बनाने में सक्षम होंगे। वे इसे एक नाम देंगे और चुनें कि किन तरीकों की अनुमति है।
शिपिंग उद्धरण प्राप्त करने का समय आने पर, हम शिपिंग कक्षा के आधार पर केवल अनुमति विधियां दिखाएंगे।
मेरा मुख्य प्रश्न यह है कि: मैं इन शिपिंग कक्षाओं को बनाने के दौरान व्यवस्थापक के लिए सभी शिपिंग विधियों की एक सूची कैसे प्राप्त कर सकता हूं?
और द्वितीयक प्रश्न के रूप में, क्या यह Mage_Sales_Model_Quote_Address :: requestShippingRates के अंदर अनुमत विधियों के फ़िल्टरिंग को समझ में आता है? (मैं निश्चित रूप से इस विधि अधिभावी किया जाएगा)
संपादित करें:
@BrianVPS के लिए धन्यवाद, मैं नीचे दिए गए कोड के साथ आने में सक्षम था। यह ऑप्टग्रुप का उपयोग कर वाहकों से सभी व्यक्तिगत तरीकों को प्रदर्शित करता है। Multiselect के साथ महान काम करता है! मुझे नहीं लगता कि यह जांचता है कि विधि वास्तव में सक्षम हैं या नहीं।
public function getAllShippingMethods()
{
$methods = Mage::getSingleton('shipping/config')->getActiveCarriers();
$options = array();
foreach($methods as $_ccode => $_carrier)
{
$_methodOptions = array();
if($_methods = $_carrier->getAllowedMethods())
{
foreach($_methods as $_mcode => $_method)
{
$_code = $_ccode . '_' . $_mcode;
$_methodOptions[] = array('value' => $_code, 'label' => $_method);
}
if(!$_title = Mage::getStoreConfig("carriers/$_ccode/title"))
$_title = $_ccode;
$options[] = array('value' => $_methodOptions, 'label' => $_title);
}
}
return $options;
}
शिपिंग क्लास बनाम शिपिंग विधियों को स्पष्ट करें। –
एक शिपिंग क्लास केवल स्वीकृत शिपिंग विधियों का संग्रह है जिसे किसी उत्पाद को असाइन किया जा सकता है। उदाहरण के लिए, मैं "खाद्य" नामक एक कक्षा बना सकता हूं जो पूरे रातोंरात शिपिंग विधियों से जुड़ा हुआ है। सभी खाद्य उत्पादों को "खाद्य" शिपिंग कक्षा सौंपा जाएगा। जब शिपिंग उद्धरण प्राप्त करने का समय आता है, तो Magento यह देखने के लिए जांच करेगा कि कार्ट में किसी भी उत्पाद में शिपिंग कक्षा है या नहीं।यदि हमारे उत्पादों में से एक केक है, तो Magento को सभी शिपिंग विधियों को छिपाना चाहिए जो रातोंरात नहीं हैं। –