【问题标题】:How to get the default Store code within the Magento backend如何在 Magento 后端获取默认的商店代码
【发布时间】:2012-08-24 01:49:53
【问题描述】:

我正在尝试从 Magento 的后端中找出默认的商店代码。虽然这听起来很简单,但我找不到任何解决方案。

我找到的sn-ps要么是

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没有使用?我真的很想知道必须在那里使用幻数的原因(如果必须的话)。

【问题讨论】:

    标签: php magento


    【解决方案1】:

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

    [...] 而 Mage::app()->getWebsites() 将返回一个数组 包括通常的前端网站,但不包括返回的对象 获取网站()?

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

    【讨论】:

      【解决方案2】:

      你可以试试:

      Mage::app()->getDefaultStoreView()->getCode();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-08
        • 2011-11-07
        • 1970-01-01
        相关资源
        最近更新 更多