class Ab_CategoryObserver_Model_Observer
{
public function updateTopMenuJson(Varien_Event_Observer $observer)
{
$_helper = Mage::helper('catalog/category');
$_categories = $_helper->getStoreCategories();
$recursionLevel = 3; // Add recursion level
$storeId = 1; // Add your Store ID for which you want to get category tree
$node = '';
$categoryTreeData = $this->getCategoryTree($recursionLevel, $storeId);
$arr = json_encode($this->getCategoryTree(3));
echo "<pre>";print_r($arr);
echo("<script>console.log('PHP: ".$arr."');</script>");
file_put_contents("cat_node.json", $arr);
}
protected function getCategoryTree($recursionLevel, $storeId = 1)
{
$parent = Mage::app()->getStore($storeId)->getRootCategoryId();
$tree = Mage::getResourceModel('catalog/category_tree');
/* @var $tree Mage_Catalog_Model_Resource_Category_Tree */
$nodes = $tree->loadNode($parent)
->loadChildren($recursionLevel)
->getChildren();
$tree->addCollectionData(null, false, $parent);
$categoryTreeData = array();
foreach ($nodes as $node) {
if ($node->getIsActive()) {
$categoryTreeData[$node->getData('entity_id')] = $this->getNodeChildrenData($node);
}
}
return $categoryTreeData;
}
protected function getNodeChildrenData(Varien_Data_Tree_Node $node)
{
$categoryData = array(
'title' => $node->getData('name'),
'url' => $node->getData('url_key'),
'id' => $node->getId(),
'description' => $node->getData('description'),
'mega_menu' => 'false'
);
foreach ($node->getChildren() as $childNode) {
if (!array_key_exists('children', $categoryData)) {
$categoryData['mega_menu'] = 'true';
$categoryData['children'] = array();
}
$categoryData['children'][$childNode->getData('entity_id')] = $this->getNodeChildrenData($childNode);
}
return $categoryData;
}
}
-
Hey, can you please check you accepted answers and upvote too if it was useful? Thanks :) – sv3n Jul 11 '17 at 11:46
Add a comment
|
Category description isn't part of your collection, in getCategoryTree()
change this:
$tree->addCollectionData(null, false, $parent);
To:
$collection = $tree->getCollection()
->addAttributeToSelect('description');
$tree->addCollectionData($collection, false, $parent);