1.新建 app\code\Mage\Page\Block\Html\Homemenu.php 文件
代码如下:
<?php
/**
* Created by PhpStorm.
* User: yongkd
* Date: 2015/7/30
* Time: 12:54
*/
/**
* Home menu block
*/
class Mage_Page_Block_Html_Homemenu extends Mage_Core_Block_Template
{
public function __construct()
{
$this->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
<?php
/**
* Home menu for store
*
* @see Mage_Page_Block_Html_Homemenu
*/
?>
<?php $all_category = $this->getHomeMenu() ?>
<?php if($all_category): ?>
<ul>
<?php $i=0;foreach($all_category as $key=>$item):?>
<?php if($i<=12):?>
<?php if ($item['is_active'] == 1): ?>
<li>
<a href="<?php echo $item['url'];?>"><?php echo $item['name'];?></a>
<?php if (isset($item['children'])): ?>
<div class="TabC">
<div class="nav_zk">
<?php foreach ($item['children'] as $v): ?>
<?php if ($v['is_active'] == 1): ?>
<p><a href="<?php echo $v['url'];?>"><?php echo $v['name'];?></a></p>
<?php endif;?>
<?php endforeach;?>
</div>
<?php
$BlockId = 'home_'.$item['id'];
echo $this->getLayout()->createBlock('cms/block')->setBlockId($BlockId)->toHtml();
?>
</div>
<?php endif;?>
</li>
<?php endif;?>
<?php endif;?>
<?php $i++;endforeach;?>
</ul>
<?php endif ?>
3.布局文件 layout/page.xml
<!--HomeMenu start-->
<block type="page/html_homemenu" name="homemenu" template="page/html/homemenu.phtml"/>
<!--HomeMenu start-->
4.最后在首页模板文件里调用
<?php echo $this->getChildHtml('homemenu'); ?>