gpt4 book ai didi

php - 如何在 Magento 后端获取默认商店代码

转载 作者:可可西里 更新时间:2023-11-01 13:11:23 25 4
gpt4 key购买 nike

我正在尝试从 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未被使用?我真的很想知道必须在那里使用魔数(Magic Number)的原因(如果必须的话)。

最佳答案

Magento 中没有默认商店这样的东西。唯一的特殊商店是管理员商店;所有其他商店在 Magento 中拥有相同的权利。

[...] while Mage::app()->getWebsites() will return an array that onlyincludes the usual frontend website, but not the object returned bygetWebsite()?

你应该看看 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。

关于php - 如何在 Magento 后端获取默认商店代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12178154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com