2012-08-27 13 views
7

मैं Magento SOAP API v2 का उपयोग कर कॉन्फ़िगर करने योग्य उत्पाद के लिए सभी संबंधित उत्पादों को प्राप्त करने का प्रयास कर रहा हूं। CatalogProductLink कॉल नज़दीक दिखता है, लेकिन कॉन्फ़िगर करने योग्य प्रकारों को संभाल नहीं करता है। मुझे किसी अन्य कॉल को नहीं देखा जाता है जिसमें उत्पाद के लिए संबंधित उत्पाद और कॉन्फ़िगर करने योग्य प्रकार की जानकारी होती है। दूसरों ने इस मुद्दे को कैसे हल किया है?Magento SOAP API2 के साथ कॉन्फ़िगर करने योग्य उत्पाद के लिए संबंधित उत्पादों को कैसे पुनर्प्राप्त करें?

मैं Magento संस्करण 1.6 और जावा के साथ SOAP API V2 का उपयोग कर रहा हूं।

+0

आप जो चाहते थे उसे पुनः प्राप्त करने के लिए हैंडल रखें। आपको इस मामले के लिए अनुकूलित API v2 बनाना होगा। –

+0

जोशुआ मार्सेल - कृपया आप विस्तारित कर सकते हैं? यदि कस्टम एपीआई का उपयोग करना संभव है तो PHP कोड कैसा दिखता है? मैंने उपरोक्त के समान जावा एपीआई क्लाइंट की कोशिश की है, दोनों 'संबंधित' और 'समूहित' दोनों खाली रिक्त सूची लौटाते हैं, हालांकि मैं व्यवस्थापक क्लाइंट में उत्पादों को देख सकता हूं। – mikesalera

उत्तर

1

मैंने इस समाधान में गहराई से देखा और महसूस किया कि आपको जो परिणाम मिल रहे हैं, उन्हें प्राप्त करने के लिए आपको एपीआई मॉडल (Mage_Catalog_Model_Product_Api) को ओवरराइड करने की आवश्यकता हो सकती है।

आइटम समारोह (लाइन 90 के आसपास) में, आप कुछ इस तरह कर सकते हैं:

foreach ($collection as $product) { 
    $childProductIds = Mage::getModel('catalog/product_type_configurable')->getChildrenIds($product->getId()); 
    $result[] = array(
     'product_id' => $product->getId(), 
     'sku'  => $product->getSku(), 
     'name'  => $product->getName(), 
     'set'  => $product->getAttributeSetId(), 
     'type'  => $product->getTypeId(), 
     'category_ids' => $product->getCategoryIds(), 
     'website_ids' => $product->getWebsiteIds(), 
     'children' => $childProductIds[0], 
    ); 
} 
+0

क्या आपने यह कोशिश की है? क्या यह आपके लिए काम करता है? – Muk

1
  • फ़ोल्डर एप्लिकेशन/कोड बनाने/स्थानीय/दाना/सूची/मॉडल/उत्पाद/लिंक
  • इस फ़ोल्डर में ऐप/कोड/कोर/मैज/कैटलॉग/मॉडल/उत्पाद/लिंक/एपीआईएफपी कॉपी करें और इसे संपादित करें। (मैं केवल V1 के लिए परिवर्तन किया है, लेकिन मैं बहुत यकीन है कि यह V2 में के रूप में आसान है हूँ)
  • निम्नलिखित

    if($type == "associated"){ 
        $product = $this->_initProduct($productId); 
        try 
        { 
         $result = Mage::getModel('catalog/product_type_configurable')->getUsedProducts(null,$product); 
        } 
        catch (Exception $e) 
        { 
         $this->_fault('data_invalid', Mage::helper('catalog')->__('The product is not configurable.')); 
        } 
    
    } 
    else 
    { 
        $typeId = $this->_getTypeId($type); 
    
        $product = $this->_initProduct($productId, $identifierType); 
    
        $link = $product->getLinkInstance() 
         ->setLinkTypeId($typeId); 
    
        $collection = $this->_initCollection($link, $product); 
    
        $result = array(); 
    
        foreach ($collection as $linkedProduct) { 
         $row = array(
          'product_id' => $linkedProduct->getId(), 
          'type'  => $linkedProduct->getTypeId(), 
          'set'  => $linkedProduct->getAttributeSetId(), 
          'sku'  => $linkedProduct->getSku() 
         ); 
    
         foreach ($link->getAttributes() as $attribute) { 
          $row[$attribute['code']] = $linkedProduct->getData($attribute['code']); 
         } 
    
         $result[] = $row; 
        } 
    } 
    return $result; 
    
  • तो साथ आइटम() फ़ंक्शन की सामग्री की जगह आप एपीआई को इस तरह कॉल कर सकते हैं:

    $ क्लाइंट-> कॉल ($ sessionId, 'product_link.list', सरणी ('संबद्ध', $ id_of_your_configurable_product);

असल में मेरा कोड प्रदान किए गए प्रकार की जांच कर रहा है और यदि यह "संबद्ध" है तो यह बच्चे के उत्पाद लौटाता है। मुझे यकीन है कि ऐसा करने का बेहतर तरीका है, लेकिन मैंने सोचा कि उत्पाद लिंक एपीआई ऐसा करने के लिए सबसे प्रासंगिक स्थान था।

आनंद लें!

(कृपया ध्यान दें: इस कोड को मेरा नहीं है, मैं सिर्फ यह अनुकूलित और सोचा था कि यह तुम लोग मदद करने के लिए एक अच्छा विचार होगा) के रूप में तक मुझे पता है Magento समुदाय v1.6 के लिए यह नहीं है

संबंधित मुद्दे