2015-12-20 119 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

相关问题