Magento 利用block缓存 查询的所有分类菜单
来源:互联网 发布:淘宝的自制护肤品 编辑:程序博客网 时间:2024/06/06 08:48
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'); ?>
0 0
- Magento 利用block缓存 查询的所有分类菜单
- Magento Block的缓存机制
- Magento Block的缓存机制
- [Magento SQL] 更加分类名称,查询该分类下所有的sku
- [Magento SQL] 查询分类名称,和该分类下关联的所有sku
- 给Magento常用的Block添加缓存
- magento 获取所有分类
- magento 所有产品的url去掉分类,分类url不变
- Magento里显示指定分类的所有子分类
- Magento获取所有分类列表
- magento -- 如何取得一个分类的所有产品
- Magento如何获取产品所在的所有分类?
- magento获取当前站点的所有产品分类列表
- magento -- 解决magento中前台不显示分类菜单的问题
- Magento获取多个分类的商品查询方法
- 在Magento页面左边增加分类菜单
- 递归查询---当前分类的下的所有子分类
- magento -- 如何删除所有商品和分类
- Android Validation非空格式验证框架的使用
- 参数值的传递不是函数的任务!
- 大话测试数据(一)
- HTTP 和 HTTPS 协议
- Web应用的组件化开发
- Magento 利用block缓存 查询的所有分类菜单
- 【Hibernate】(2)Hibernate配置与session、transaction
- 使用WEBStorage+JSON做简易数据库
- java命名规范
- 聊天消息显示的圆形背景拉伸效果
- leetcode之路022 Generate Parentheses
- win2008R2 FTP 相关 200 227 550
- win10评测
- Java UrlRewrite 实现网站URL重写过程实录