Magento 利用block缓存 查询的所有分类菜单

1.新建 app\code\Mage\Page\Block\Html\Homemenu.php 文件

代码如下:

addData(array(
            'cache_lifetime'=> 7200,
            'cache_tags'    => array(Mage_Core_Model_Store::CACHE_TAG)
        ));
    }

    /**
     * 获取首页分类菜单数据
     */
    public function  getHomeMenu()
    {
        $storeId = Mage::app()->getStore()->getStoreId();// Gets the current store's id
        $category_collection = Mage::getModel('catalog/category')->getCollection()
            ->setStoreId($storeId)
            ->addAttributeToSelect('name')
            ->addAttributeToSelect('is_active');
        $arr = array();
        foreach ($category_collection as $key => $category) {
            if ($category->getLevel() <= 1) {
                continue;
            }
            $arr[$key]['level'] = $category->getLevel();
            $arr[$key]['parent_id'] = $category->getParentId();
            $arr[$key]['name'] = $category->getName();
            $arr[$key]['id'] = $category->getId();
            $arr[$key]['url'] = $category->getUrl();
            $arr[$key]['is_active'] = $category->getIsActive();
            $arr[$key]['position'] = $category->getPosition();
        }

        $arr2 = array();
        foreach ($arr as $value) {
            if ($value['level'] == 3) {
                $arr2[] = $value;
            }
        }
        foreach ($arr as $key => $value) {
            foreach ($arr2 as $val) {
                if ($value['id'] == $val['parent_id']) {
                    $arr[$key]['children'][] = $val;
                }
            }
        }
        foreach ($arr as $k => $v) {
            if ($v['parent_id'] != 2) {
                unset($arr[$k]);
            }
        }

        $all_category = $this->multi_array_sort($arr, 'position');//所有分类(分类下包含子分类)

        return empty($all_category) ? false : $all_category;
    }


    /**
     * 对二维数组按某个索引值排序
     *
     * @param $multi_array 二维数组
     * @param $sort_key    索引值
     * @param int $sort
     * @return array|bool
     */
   private function multi_array_sort($multi_array, $sort_key, $sort = SORT_ASC)
    {
        if (is_array($multi_array)) {
            foreach ($multi_array as $row_array) {
                if (is_array($row_array)) {
                    $key_array[] = $row_array[$sort_key];
                } else {
                    return false;
                }
            }
        } else {
            return false;
        }
        array_multisort($key_array, $sort, $multi_array);
        return $multi_array;
    }

}

2.创建展示分类数据的模板文件 template\page\html\homemenu.phtml



getHomeMenu() ?>

    
    $item):?>
  • getLayout()->createBlock('cms/block')->setBlockId($BlockId)->toHtml(); ?>

3.布局文件 layout/page.xml

  
            
            

4.最后在首页模板文件里调用

  getChildHtml('homemenu'); ?>


你可能感兴趣的:(Magento)