2015-12-20 161 views
0

我目前有一段代碼,它將有關Magento中所有類別的數據彙總在一起。我想補充的產品的詳細信息,包括但不限於:使用產品信息增加類別詳細信息

  • 價格
  • SKU
  • 圖像URL

我無法將這些屬性來響應

<?php 

require_once('../app/Mage.php'); //Path to Magento 
umask(0); 
Mage::app(); 
function getCategoryTree($recursionLevel, $storeId = 1) 
{ 
    $parent = Mage::app()->getStore()->getRootCategoryId();  
    $tree = Mage::getResourceModel('catalog/category_tree'); 

    $nodes = $tree->loadNode($parent) 
     ->loadChildren($recursionLevel) 
     ->getChildren(); 
    $tree->addCollectionData(null, false, $parent); 


    $categoryTreeData = array(); 
    foreach ($nodes as $node) { 
     $categoryTreeData[$node->getData('entity_id')] = getNodeChildrenData($node); 
    } 

    return $categoryTreeData; 
} 

function getNodeChildrenData(Varien_Data_Tree_Node $node) 
{ 
    $data = array(
     'title' => $node->getName(), 
     'url' => $node->getData('url_key'), 
     'price' => $node->getPrice(), 
    ); 

    foreach ($node->getChildren() as $childNode) { 
     if (!array_key_exists('children', $data)) { 
      $data['children'] = array(); 
     } 

     $data['children'][$childNode->getData('entity_id')] = getNodeChildrenData($childNode); 
    } 
    return $data; 
} 

print_r(json_encode(getCategoryTree(100))); 

?> 
+0

一個類別沒有價格。你真的想做什麼? – clinical

+0

我甚至沒有看到這個代碼中的產品模型 - 這真的不是一個好開始!嘗試一些事情,做一些關於'catalog/product'模型的閱讀。 –

回答

1

您可以輕鬆引入有關產品的信息,但您需要一路加載產品集合。到目前爲止,您只處理不包含任何產品數據的類別模型(如註釋中所述)。

要加載組與類別相關的產品,使用方法:

<?php 
... 
$products = Mage::getModel('catalog/product') 
    ->getCollection() 
    ->addAttributeToSelect({attribute}) 
    ->addCategoryFilter($category) 
    ->load(); 

$category應該是一個類別對象和$products是產品的集合,你可以遍歷。對於您感興趣的每個產品屬性,請添加一個帶有屬性名稱的addAttributeToSelect()條目。然後您可以通過書寫以下物品獲得產品詳細信息:

<?php 
... 
foreach($products as $product) { 
    $price = $product->getPrice(); 
} 
+0

嗨伊萬。您可以改進您的答案,並建議添加addAttributeToSelect()以避免加載所有屬性並僅加載必要的屬性。競爭可能很大,所以性能可能成爲一個問題。 – clinical

+1

你提出了一個好的觀點。我現在編輯它。 – Evan

相關問題