2012-06-15 20 views
5

मैं इस पद्धति का उपयोग कर रहा हूँ ताकि नई श्रेणियों का निर्माण:Magento - कैसे प्रोग्राम के एक वर्ग के लिए एक नई माता पिता स्थापित करने के लिए?

private function createCat($name){ 
    $category = Mage::getModel('catalog/category'); 
    $category->setStoreId(0); 
    $category->setName($name); // The name of the category 
    $category->setUrlKey(strtolower($name)); // The category's URL identifier 
    $category->setIsActive(1); // Is it enabled? 
    $category->setIsAnchor(0); 
    // Display mode can be 'PRODUCTS_AND_PAGE', 'PAGE', or 'PRODUCTS' 
    $category->setDisplayMode('PRODUCTS'); 
    $category->setPath('1/3'); // Important you get this right. 
    $category->setPageTitle($name); 
    $category->save(); 

    return $category->getId(); 
} 

मैं आईडी कि Magento श्रेणी के लिए असाइन किया गया है पता करने के बाद, मैं तो प्रत्येक श्रेणी के एक माता पिता श्रेणी आवंटित करने के लिए एक पाश में निम्नलिखित विधि कॉल:

private function assignCat($id, $parent){ 

    $category = Mage::getModel('catalog/category')->load($id); 
    $category->setPath('1/3/'.$parent.'/'.$id); // Important you get this right. 
    $category->save(); 
    return; 
} 

हालांकि यह वास्तव में काम नहीं करता है। पहली विधि श्रेणियों को ठीक बनाती है, लेकिन दूसरी विधि चलाने के बाद, मैं श्रेणियों को दिखाने के लिए व्यवस्थापक पैनल भी लोड नहीं कर सकता।

मैं क्या गलत कर रहा हूं?

संपादित करें:

मैं दूसरी विधि को गलत आईडी भेज रही थी। ऐसा लगता है कि डेटाबेस तालिका catalog_category_entity सही ढंग से पॉप्युलेट किया गया है, लेकिन अब श्रेणियां व्यवस्थापक दृश्य में सही ढंग से दिखाई नहीं देती हैं। वे अभी भी दिखा रहे हैं कि मूल श्रेणी अभिभावक और डेटाबेस में है, तो नया माता-पिता 0 बच्चे होने के रूप में दिखा रहा है। क्या कोई ऐसी इंडेक्सिंग है जो होने की आवश्यकता है?

संपादित करें: समाधान:

मैं मतलब समय में एक समाधान खोजने के लिए प्रबंधित किया है।

private function assignCat($id, $parent){ 
    $category = Mage::getModel('catalog/category')->load($id); 
    Mage::unregister('category'); 
    Mage::unregister('current_category'); 
    Mage::register('category', $category); 
    Mage::register('current_category', $category); 
    $category->move($parent); 
    return; 
} 
+4

आपको अपना समाधान उत्तर के रूप में पोस्ट करना चाहिए – Benubird

उत्तर

1

तुम बस का उपयोग कर सकते setParentId():

$category->setParentId($parentCategoryId); 

वैकल्पिक रूप से आप श्रेणी का उपयोग कर सकते जनक श्रेणी बदलने के लिए, मैं इसे नीचे ले जाने के लिए श्रेणी श्रेणी में कदम बनाया() विधि का उपयोग कर की जरूरत श्रेणी बनाने के लिए एपी मॉडल:

$categoryData = array(
    'name'  => $name, 
    'url_key'  => $urlKey, 
    'is_active' => '1', 
); 

$categoryApi = Mage::getModel('catalog/category_api_v2'); 
$categoryId = $categoryApi->create($parentCategoryId, $categoryData, $store) 
संबंधित मुद्दे