Як отримати ідентифікатор магазину з коду


23

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

Я мав намір завантажити це через колекцію, але мені було цікаво, чи є інший спосіб через помічника чи ресурсу.


3
Для мене це прекрасно працює:Mage::app()->getStore($storeCode)->getId();
Хатеф

Відповіді:


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 ('магазини') -> {$ code} -> {'system'} -> {'store'} -> {'id'};
anshuman

@dougMcLean отримала таку ж проблему на EE 1.14.1.0, це з’являється, коли кеш «config» увімкнено - схоже на проблему кешу Magento. Sander, будь ласка, будь ласка, відредагуйте свою відповідь за допомогою Mage :: getConfig () -> getNode ('магазини') -> {$ code}, тож рішення працює як для ввімкнених, так і для відключених кеш-випадків?
Катя Суйковська

У мене багатоповерхівка, як я можу відображати вибрані товари магазину за допомогою ідентифікатора магазину, мій код -> justpaste.it/6fi1f
Gem

21

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

Хіба це не найпростіший спосіб зробити?


2
Це може бути найпростіше, але може бути не найкращим для продуктивності сайту, щоб завантажити повний магазин, коли мені потрібен лише ідентифікатор.
Девід Маннерс

Гаразд, має сенс. Тоді направляйте SQL в модель ресурсу :)
Зіфіус

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.