日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Magento获取指定分类下的所有子分类信息

發布時間:2025/4/16 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Magento获取指定分类下的所有子分类信息 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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

/** * 輸入:某一個分類的ID數字 * 返回: 該分類下所有子分類的ID組成的數組 * 可用于: 模板文件中可以直接使用,也可以用于action等文件類內部 * 實現思路:使用隊列的方法實現非遞歸,對樹從上往下遍歷 **/ function getAllChildrenOfCategory($cateid){$resArr = array();//結果數組$queueArr = array();//隊列數組array_push($queueArr,$cateid);while($currentcid = array_pop($queueArr)){array_push($resArr,$currentcid); //處理當前節點的孩子節點$_category = Mage::getModel('catalog/category')->load($currentcid);$subcats = $_category->getChildren();$idarrs = explode(',',$subcats);foreach($idarrs as $subCatid){if(!$subCatid) continue;$_subcategory = Mage::getModel('catalog/category')->load($subCatid);if($_subcategory->getIsActive()) {array_push($queueArr,$subCatid);}}reset($queueArr);}return $resArr; } //測試一下 $allProducerIds = getAllChildrenOfCategory(19); $allDesignedIds = getAllChildrenOfCategory(18);

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

最后的測試,輸入的是兩個分類的ID,函數執行結束以后,返回的數組里面就是所有子分類的ID。

轉載于:https://www.cnblogs.com/crazyant/archive/2012/11/10/2823896.html

總結

以上是生活随笔為你收集整理的Magento获取指定分类下的所有子分类信息的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。