我正在尝试从 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”被激活,该 URL 仍然有效。我可以设置任何商店代码,所以如果我在其中一个的配置范围内,我可以使用那个。但是如果配置范围设置为默认或网站,它也必须工作,所以我想在这种情况下使用默认的商店代码。
我找到了一个解决方案:
$websites = Mage::app()->getWebsites();
$code = $websites[1]->getDefaultStore()->getCode();
但是,这给我留下了一些后续问题。
为什么Mage::app()->getWebsite()
返回一个只包含特殊admin
商店的特殊网站对象,而返回一个只包含通常前端网站Mage::app()->getWebsites()
的数组,而不是返回的对象?getWebsite()
为什么前端网站对象在数组中占用索引 1,而索引 0 未使用?我真的很想知道必须在那里使用幻数的原因(如果必须的话)。