Jak uzyskać identyfikator sklepu z kodu

23

Mam więc kod sklepu i naprawdę chciałbym po prostu identyfikator sklepu. Idealnie nie chcę po prostu całkowicie ładować sklepu, ponieważ potrzebuję tylko identyfikatora.

Jednym z pomysłów było załadowanie tego za pośrednictwem kolekcji, ale zastanawiałem się, czy istnieje inny sposób za pośrednictwem pomocnika lub zasobu.

David Manners
źródło
3
Dla mnie działa to doskonale:Mage::app()->getStore($storeCode)->getId();
Hatef

Odpowiedzi:

10

Nie testowałem tego, ale wydaje mi się, że pamiętam, że możesz uzyskać identyfikator, używając metody loadConfigw modeluMage_Core_Model_Store

Następnie możesz uzyskać identyfikator, dzwoniąc getId()na model.

loadConfigMetoda wykorzystuje załadowaną konfigurację do pobierania danych sklepu

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

Co daje następujące wartości

  • ID
  • kod
  • ID strony
Sander Mangel
źródło
3
Dziwne - dla mnie (Magento 1.9.0.0) zwraca wartość NULL. Dla mnie zadziałałMage::getConfig()->getNode('stores')->{$code}
Doug McLean
Lub jeszcze lepiej: Mage :: getConfig () -> getNode ('przechuje') -> {$ code} -> {'system'} -> {'store'} -> {'id'};
anshuman
@dougMcLean ma ten sam problem w EE 1.14.1.0, pojawia się, gdy pamięć podręczna „config” jest włączona - wygląda na problem z pamięcią podręczną Magento. Sander, czy byłbyś tak miły, aby edytować swoją odpowiedź za pomocą Mage :: getConfig () -> getNode ('przechuje') -> {$ code}, więc rozwiązanie działa zarówno dla włączonych / wyłączonych przypadków pamięci podręcznej?
Kate Suykovskaya
Mam sklep wielostanowiskowy, w jaki sposób mogę wyświetlić wybrane produkty sklepu przy użyciu identyfikatora sklepu, mojego kodu -> justpaste.it/6fi1f
Gem
21

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

Czy to nie jest najprostszy sposób?

Zifius
źródło
2
Może to być najprostsze, ale może nie być najlepsze dla wydajności witryny, aby załadować pełny sklep, gdy potrzebuję tylko identyfikatora.
David Manners
Ok, ma sens. Następnie skieruj SQL w modelu zasobów :)
Zifius
5

Nie wiem, czy to jest coś, co jest charakterystyczne dla 1.9.0.0 ale nie mogłem dostać albo Mage::getConfig()->getNode()->stores->{$code}albo Mage::getModel('core/store')->loadConfig($code)(co w rzeczywistości połączeń Mage::getConfig()->getNode()->stores->{$code} ), aby powrócić niczego.

Pierwszy był bliski ... z subtelną zmianą formy, to daje wynik, chociaż może być więcej informacji niż potrzebujesz:

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

Dla mnie, aby uzyskać tylko identyfikator sklepu, zadziałało:

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

... wciąż nieefektywne, ładowanie wszystkich informacji o konfiguracji tylko dla jednej małej liczby. Ale hej, to Magento dla ciebie.

Doug McLean
źródło
4

Następujące powinny działać:

<?php echo Mage::getModel('core/store')->loadConfig($code)->getId(); ?>
Mayers
źródło
Dzięki za odpowiedź, choć wydaje się, że jest taka sama jak poprzednia :)
David Manners
Tak, zauważyłem to po opublikowaniu mojej odpowiedzi :)
Mayers