php – Magento – 在后端获取默认商店代码
我试图从Magento的后端找到默认的商店代码.虽然这听起来很简单,但我找不到任何解决方案.
我找到的片段也是 Mage::app()->getStore()->getCode() (虽然这不符合默认值但对应当前商店)或 Mage::app()->getStore(Mage_Catalog_Model_Abstract::DEFAULT_STORE_ID)->getCode(); 但是从后端开始,这些只返回“admin”(因为后端被视为某种具有商店ID 0的特殊商店 – 这是DEFAULT_STORE_ID的值).有谁可以请我指出从任何地方获取实际默认商店代码的方法? (如果激活了“将存储代码添加到URL”和“自动重定向到基本URL”选项,则由Magento设置的存储代码) 我只需要一些背景知识:我需要在Magento配置中生成一个URL,如果激活了“向URL添加存储代码”,它仍然有效.我可以设置任何商店代码,所以如果我在其中一个的配置范围内,我可以使用那个.但是,如果配置范围设置为默认或网站,它也必须工作,我想在这种情况下使用默认的商店代码. 提前致谢! 编辑:我找到了一个解决方案: $websites = Mage::app()->getWebsites(); $code = $websites[1]->getDefaultStore()->getCode(); 但是,这给我留下了一些后续问题. 为什么Mage :: app() – > getWebsite()返回一个只包含特殊管理商店的特殊网站对象,而Mage :: app() – > getWebsites()将返回一个仅包含通常前端的数组网站,但不是getWebsite()返回的对象? 为什么前端网站对象占用数组中的索引1,而索引0未使用?我真的很想知道在那里使用幻数的原因(如果必须的话).
简直就是magento中没有默认存储这样的东西.唯一的特殊商店是admin one,所有其他商店在magento中拥有相同的权利.
你应该看一下Mage_Core_Model_App :: getWebsites()源代码: public function getWebsites($withDefault = false,$codeKey = false) { $websites = array(); if (is_array($this->_websites)) { foreach ($this->_websites as $website) { if (!$withDefault && $website->getId() == 0) { continue; } //... } } return $websites; } 因此,如果您调用$websites = Mage :: app() – > getWebsites(true);,您将获得一个网站数组,其中管理员位于索引0处. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |