如何从代码中获取商店ID


23

因此,我有了商店代码,我真的很想要商店ID。理想情况下,我只希望ID而不希望简单地完全加载商店。

我曾经有一个想法是通过集合加载它,但是我想知道是否有另一种通过助手或资源的方法。


3
对我来说,这非常有效:Mage::app()->getStore($storeCode)->getId();
Hatef

Answers:


10

尚未测试过,但我似乎记得您可以通过使用loadConfig模型中的方法来获取IDMage_Core_Model_Store

之后,您可以通过调用getId()模型来获取ID 。

loadConfig方法使用加载的配置来检索存储数据

$store = Mage::getConfig()->getNode()->stores->{$code};

给您以下值

  • ID
  • website_id

3
奇怪-对我来说(Magento 1.9.0.0)这将返回NULL。对我Mage::getConfig()->getNode('stores')->{$code}
Doug McLean

甚至更好:Mage :: getConfig()-> getNode('stores')-> {$ code}-> {'system'}-> {'store'}-> {'id'};
anshuman

@dougMcLean在EE 1.14.1.0上遇到了同样的问题,当启用“配置”缓存时出现-看起来像Magento缓存问题。Sander会善于使用Mage :: getConfig()-> getNode('stores')-> {$ code}编辑答案,因此该解决方案适用于已启用/已禁用的高速缓存情况吗?
凯特·苏伊科夫斯卡娅

我有多家商店,如何使用商店ID,我的代码-> justpaste.it/6fi1f
宝石,

21

Mage::getModel('core/store')->load($storeCode, 'code')->getId()

这不是最简单的方法吗?


2
当我只需要ID时,加载完整存储可能是最简单的方法,但可能不是最佳的网站性能。
David Manners 2015年

好吧,有道理。然后在资源模型中直接执行SQL :)
Zifius

5

我不知道这是否是1.9.0.0特有的东西,但是我不能让Mage::getConfig()->getNode()->stores->{$code}Mage::getModel('core/store')->loadConfig($code)(实际上 Mage::getConfig()->getNode()->stores->{$code})返回任何东西。

首先是关闭...在形式上进行了细微的更改,这得到了一个结果,尽管它提供的信息远远超出了您的需要:

$store = Mage::getConfig()->getNode('stores')->{$code}

对于我来说,仅获取商店ID的原因是:

$storeId = Mage::getConfig()->getNode('stores')->{$code}->system->store->id;

...当然仍然效率低下,仅加载一个数字即可加载所有配置信息。嘿,那是Magento。


4

以下应该工作:

<?php echo Mage::getModel('core/store')->loadConfig($code)->getId(); ?>

感谢您的回答,尽管这似乎与早期的回答相同:)
David Manners,2015年

是的,在我发布回复后注意到了它:)
Mayers 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.