亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > 建站經驗 > 正文

Magento中顯示指定分類產品 子分類及分類產品數量

2024-08-30 19:06:38
字體:
來源:轉載
供稿:網友

本文章來給大家介紹在Magento中顯示指定分類產品 子分類及分類產品數量的實現程序,方法也很簡單的,各位朋友可參考.

二次開發中經常遇到一種情況,就是判斷一個分類是否屬于某一個大的分類,而大的分類包括很多子分類成樹狀結構,基本的方法都是先獲取大分類下的所有子分類的信息,然后再挨個比較看是否有ID和待定ID相等,一種用遞歸方法獲取大分類所有的ID,第二種用隊列等非遞歸的方法獲取所有子分類ID,第二種明顯性能要好一些.

本文在magento的模板文件里測試成功一個函數:輸入一個分類的ID,將返回該分類下所有子分類(遞歸獲取)的ID,組成一個數組返回,所用的方法為用隊列實現的非遞歸方法,代碼如下:

  1. /** 
  2. * 輸入:某一個分類的ID數字 
  3. * 返回: 該分類下所有子分類的ID組成的數組 
  4. * 可用于: 模板文件中可以直接使用,也可以用于action等文件類內部 
  5. * 實現思路:使用隊列的方法實現非遞歸,對樹從上往下遍歷 
  6. **/ 
  7. function getAllChildrenOfCategory($cateid){ 
  8.  $resArr = array();//結果數組 
  9.  $queueArr = array();//隊列數組 
  10.  array_push($queueArr,$cateid); 
  11.  
  12.  while($currentcid = array_pop($queueArr)){ 
  13.   array_push($resArr,$currentcid);            
  14.   //處理當前節點的孩子節點 
  15.   $_category = Mage::getModel('catalog/category')->load($currentcid); 
  16.   $subcats = $_category->getChildren(); 
  17.    
  18.   $idarrs = explode(',',$subcats); 
  19.   foreach($idarrs as $subCatid){ 
  20.    if(!$subCatidcontinue
  21.    $_subcategory = Mage::getModel('catalog/category')->load($subCatid); 
  22.    if($_subcategory->getIsActive()) { 
  23.     array_push($queueArr,$subCatid); 
  24.    }  //開源軟件:Vevb.com 
  25.   } 
  26.   reset($queueArr); 
  27.  } 
  28.  return $resArr
  29. //測試一下 
  30. $allProducerIds = getAllChildrenOfCategory(19); 
  31. $allDesignedIds = getAllChildrenOfCategory(18); 

PHP沒有棧和隊列的數據結構,可以用數組來模擬實現,數組的array_push和array_pop剛好就是這么兩個方法,其中因為array_pop每次會改變數組的指針,所以可以在循環的末尾reset一下重置數組.

最后的測試,輸入的是兩個分類的ID,函數執行結束以后,返回的數組里面就是所有子分類的ID,如果我們要調用指定分類下的產品和獲取子分類及產品數量 上面辦法實現不完美.

Magento首頁及分類頁面側邊欄經常需要調用某一個分類下的產品,例如首頁的Featured Product等,這些分類一般保持不激活狀態,我們可以添加店鋪中比較暢銷的產品到該分類中,并從前臺調用,下面一段代碼主要用處就是在Magento中獲取指定分類下的產品,代碼如下:

  1. $products = Mage::getModel('catalog/category')->load($category_id
  2.   ->getProductCollection() 
  3.   ->addAttributeToSelect('*'
  4.   ->addAttributeToFilter('status', 1) 
  5.   ->addAttributeToFilter('visibility', 4); 

將上面的$category_id修改為需要顯示產品的分類id,該id可以在分類頁面中看到,上述代碼中還捎帶了一些過濾,產品狀態為激活,并處于可見狀態.

很多Magento的項目中,客戶需求將每個當前分類下的每個子分類以及該分類下的產品數量全部顯示出來,類似于Category (108)的形式.

想實現這種效果,就必須要知道如何獲取當前分類的子分類,并了解Product Collection類中的count()方法,該方法用于獲取任意形式下對于Product Collection進行篩選后的產品數量,代碼如下:

  1. // 獲取當前分類模型 
  2. $currCat = Mage::registry('current_category'); 
  3.  
  4. //獲取當前分類的所有子分類的模型集合 
  5. $collection = Mage::getModel('catalog/category')->getCategories($currCat->getEntityId()); 
  6.  
  7. //循環子分類的模型集合 
  8. foreach($collection as $cat) { 
  9.     if($cat->getIsActive()) { 
  10.         $category = Mage::getModel('catalog/category')->load($cat->getEntityId()); 
  11.  
  12.         //獲取子分類的產品Collection,并通過count()方法,獲取該子分類的產品數量 
  13.         $prodCollection = Mage::getResourceModel('catalog/product_collection')->addCategoryFilter($category); 
  14.         Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($prodCollection); 
  15.         Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($prodCollection); 
  16.  
  17.         $html .= '<a href="<?php echo $category->getUrl() ?>"><?php echo $category->getName() ?></a> (<?php echo $prodCollection->count() ?>)<br/>'
  18.     } 
  19. }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲a成v人在线观看| 国产精品久久久久久久天堂| 日韩成人中文字幕| 亚洲毛片在线观看| 一区二区三区四区在线观看视频| 久久久免费高清电视剧观看| 久久久人成影片一区二区三区观看| 91wwwcom在线观看| 国产999精品久久久| 波霸ol色综合久久| 精品国产欧美一区二区三区成人| 怡红院精品视频| 国产97色在线|日韩| 国产免费一区二区三区在线能观看| 热久久99这里有精品| 国产精品99久久久久久白浆小说| 91极品视频在线| 97免费在线视频| 国产视频精品免费播放| 日韩在线高清视频| 亚洲第一二三四五区| 精品国产电影一区| 国产精品国产三级国产专播精品人| 国产香蕉精品视频一区二区三区| 日韩在线中文视频| 国产精品高精视频免费| 国产综合香蕉五月婷在线| 亚洲成人久久电影| 国产精品美女主播| 国产成人一区二区在线| 亚洲色图日韩av| 在线视频国产日韩| 国产精品精品久久久| 欧美在线视频网| 亚洲国产成人久久综合| 国产精品男人的天堂| 亚洲成人在线网| 国产午夜一区二区| 色天天综合狠狠色| 欧美激情一区二区三区成人| 亚洲人成伊人成综合网久久久| 在线观看免费高清视频97| 国产亚洲精品成人av久久ww| 福利视频导航一区| 欧美有码在线视频| 亚洲日本欧美中文幕| 亚洲免费精彩视频| 国产主播喷水一区二区| 久久久精品视频成人| 一级做a爰片久久毛片美女图片| 国产精品扒开腿爽爽爽视频| 5566成人精品视频免费| 国内成人精品视频| 日韩av网站大全| 亚洲国产欧美一区二区三区久久| 欧美一区深夜视频| 91国产视频在线| 日韩在线观看免费av| 欧美精品少妇videofree| 亚洲欧美一区二区三区情侣bbw| 精品女同一区二区三区在线播放| 成人国产精品免费视频| 国产亚洲免费的视频看| 亚洲成人激情在线观看| 久久中文精品视频| 91国产精品91| 尤物九九久久国产精品的分类| 91精品国产高清自在线| 久久91精品国产91久久跳| 97人人爽人人喊人人模波多| 国产欧美va欧美va香蕉在线| 亚洲成人av片在线观看| 成人性教育视频在线观看| 久久青草精品视频免费观看| 国产成人精品a视频一区www| 2019中文字幕在线| 日韩亚洲成人av在线| 亚洲毛片在线免费观看| 欧美日韩性视频在线| 欧美xxxx综合视频| 国产精品久在线观看| 国产欧美日韩中文字幕| 91色中文字幕| 91国自产精品中文字幕亚洲| 欧美激情一级二级| 国产精品视频最多的网站| 国产精品夜间视频香蕉| 欧美视频在线视频| 欧美一级bbbbb性bbbb喷潮片| 91视频-88av| 久久理论片午夜琪琪电影网| 日韩免费在线播放| 91在线视频九色| 不卡av电影在线观看| 国产成人精品最新| 国内精品久久久久影院优| 欧美一区二区影院| 亚洲精品乱码久久久久久按摩观| 欧美专区福利在线| 久久韩剧网电视剧| 亚洲一区亚洲二区| 国产精品青草久久久久福利99| 亚洲精品一区中文字幕乱码| 亚洲成人黄色在线| 国产精品美女999| 亚洲成人黄色在线| 欧美日韩国产精品一区二区三区四区| 国产精品夜间视频香蕉| 欧美成人精品三级在线观看| 国产成+人+综合+亚洲欧洲| 亚洲激情国产精品| 欧美精品18videos性欧| 精品国产乱码久久久久久天美| 国产精品美女在线| 国产精品免费视频久久久| 琪琪第一精品导航| 日韩欧美一区视频| 欧美日韩在线视频首页| 亚洲综合成人婷婷小说| 国产美女91呻吟求| 久久久久999| 欧美大成色www永久网站婷| 亚洲男人天堂2024| 欧美自拍大量在线观看| 欧美裸体视频网站| 日韩精品小视频| 草民午夜欧美限制a级福利片| 国产精品视频免费在线| 亚洲精品福利在线观看| 成人黄色片在线| 日韩免费观看av| 国产成人综合av| 欧美超级乱淫片喷水| 日本久久久久亚洲中字幕| 怡红院精品视频| 日韩中文字幕不卡视频| 精品久久久久久久久久国产| 久久精品国产久精国产思思| 亚洲新声在线观看| 久久亚洲精品国产亚洲老地址| 91久久精品国产91性色| 国产噜噜噜噜噜久久久久久久久| 91精品国产777在线观看| 亚洲一区二区黄| 欧美中文字幕视频| 亚洲性生活视频在线观看| 国产精品老女人精品视频| 亚州成人av在线| 久久久久久有精品国产| 欧美大片欧美激情性色a∨久久| 国产精品久久久久久久久久久久久| 国产午夜精品全部视频播放| 国产视频丨精品|在线观看| 日韩视频免费大全中文字幕| 亚洲网站在线播放| 国产精品白丝av嫩草影院| 国内精品久久久久影院 日本资源| 成人春色激情网| 日韩欧美中文字幕在线播放| 国产精品第七十二页| 久久久久久久久久久成人| 国产网站欧美日韩免费精品在线观看| 亚洲成人动漫在线播放| 久久夜色精品亚洲噜噜国产mv|