我想把所有商店都放到Magento商店。所有商店,我的意思是来自所有网站的所有商店。我写了这段代码并且它可以工作,但我有点担心嵌套的foreach循环的复杂性。如果您认为我可以做一些不同的事情,请看看它并告诉我。
public function getAllStoresCustom(){
$all_stores = array();
foreach (Mage::app()->getWebsites() as $website) {
foreach ($website->getGroups() as $group) {
$all_stores [] = $group->getStores();
}
}
return $all_stores;
}
我只在Magento中找到了这些功能,所以我认为我必须使用它们,这似乎是唯一有效的组合。
非常感谢
答案 0 :(得分:3)
试试这个:
$allStores = Mage::getModel('core/store')->getCollection();
然后在需要时循环$allStores
foreach ($allStores as $store) {
//do something with $store
}
注意:您将获得一个ID为0
的商店。这是管理商店视图。如果您希望所有没有管理商店视图的商店使用此功能:
$allStores = Mage::getModel('core/store')->getCollection()->setWithoutDefaultFilter()
答案 1 :(得分:1)
foreach()
是一个非常有效的PHP函数,所以你可以打赌它不会是你的减速。如果您希望优化某些内容,请查看getStores()
和getGroups()
函数的代码,因为这些函数是在迭代中调用的,而getWebsites()
只调用一次。
如果您需要更多指导,请随时使用这些功能的内容更新您的问题。
您可能还想尝试https://codereview.stackexchange.com/获取更多经验丰富的意见,特别是因为您没有任何特定的编程问题/错误=)