Как получить идентификатор магазина из кода

23

Так что у меня есть код магазина, и мне бы очень хотелось просто идентификатор магазина. В идеале я не хочу просто загружать магазин полностью, так как мне нужен только идентификатор.

У меня была идея загрузить это через коллекцию, но мне было интересно, есть ли другой путь через помощника или ресурс.

Дэвид Мэннерс
источник
3
Для меня это прекрасно работает:Mage::app()->getStore($storeCode)->getId();
Hatef

Ответы:

10

Не проверял это, но я помню, что вы можете получить идентификатор, используя метод loadConfigв моделиMage_Core_Model_Store

После этого вы можете получить удостоверение личности, позвонив getId()на модель.

loadConfigМетод использует загруженную конфигурацию для извлечения данных хранилища

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

Что дает вам следующие значения

  • мне бы
  • код
  • website_id
Сандер Мангель
источник
3
Странно - для меня (Magento 1.9.0.0) это возвращает NULL. То, что работало для меня, былоMage::getConfig()->getNode('stores')->{$code}
Даг Маклин
Или даже лучше: Mage :: getConfig () -> getNode ('stores') -> {$ code} -> {'system'} -> {'store'} -> {'id'};
Аньшуман
У @dougMcLean та же проблема на EE 1.14.1.0, она появляется, когда включен кеш "config" - похоже на проблему с кешем Magento. Сандер, будь так любезен, отредактируй свой ответ, используя Mage :: getConfig () -> getNode ('stores') -> {$ code}, так что решение работает для обоих случаев включения / выключения кэша?
Кейт Суйковская,
У меня есть несколько магазинов, как я могу отобразить выбранные товары магазина, используя идентификатор магазина, мой код -> justpaste.it/6fi1f
Gem
21

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

Разве это не самый простой способ сделать?

Zifius
источник
2
Это может быть самым простым, но не лучшим решением для производительности сайта при загрузке полного хранилища, когда мне нужен только идентификатор.
Дэвид Мэннерс
Хорошо, имеет смысл. Затем направьте 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}

То, что сработало для меня, чтобы получить только идентификатор магазина, было это:

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

... все еще неэффективно, конечно, загружать всю эту информацию конфигурации только для одного небольшого числа. Но это же Magento для тебя.

Даг Маклин
источник
4

Следующее должно работать:

<?php echo Mage::getModel('core/store')->loadConfig($code)->getId(); ?>
Майерсом
источник
Спасибо за ответ, хотя, похоже, он такой же, как и предыдущий :)
Дэвид Мэннерс
Да, заметил это после того, как я опубликовал свой ответ :)
Mayers