Comment obtenir l'ID de magasin à partir du code

23

J'ai donc le code du magasin et je voudrais vraiment simplement l'ID du magasin. Idéalement, je ne veux pas simplement charger complètement le magasin car je n'ai besoin que de l'ID.

Une idée que j'avais était de charger ceci via une collection mais je me demandais s'il y avait un autre moyen via un assistant ou une ressource.

David Manners
la source
3
Pour moi, cela fonctionne parfaitement:Mage::app()->getStore($storeCode)->getId();
Hatef

Réponses:

10

Je n'ai pas testé cela mais je semble me souvenir que vous pouvez obtenir l'ID en utilisant la méthode loadConfigdans le modèleMage_Core_Model_Store

Après cela, vous pouvez obtenir l'ID en appelant getId()le modèle.

La loadConfigméthode utilise la configuration chargée pour récupérer les données du magasin

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

Ce qui vous donne les valeurs suivantes

  • id
  • code
  • website_id
Sander Mangel
la source
3
Étrange - pour moi (Magento 1.9.0.0), cela renvoie NULL. Ce qui a fonctionné pour moi, c'estMage::getConfig()->getNode('stores')->{$code}
Doug McLean
Ou encore mieux: Mage :: getConfig () -> getNode ('stores') -> {$ code} -> {'system'} -> {'store'} -> {'id'};
anshuman
@dougMcLean a eu le même problème sur EE 1.14.1.0, cela apparaît lorsque le cache "config" est activé - ressemble à un problème de cache Magento. Sander seriez-vous si gentil de modifier votre réponse en utilisant Mage :: getConfig () -> getNode ('stores') -> {$ code}, donc la solution fonctionne pour les deux cas de cache activés / désactivés?
Kate Suykovskaya
J'ai plusieurs magasins, comment puis-je afficher les produits sélectionnés du magasin en utilisant l'identifiant du magasin, mon code -> justpaste.it/6fi1f
Gem
21

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

N'est-ce pas la façon la plus simple de le faire?

Zifius
la source
2
Il peut être plus simple mais peut-être pas le meilleur pour que les performances du site chargent le magasin complet lorsque je n'ai besoin que de l'ID.
David Manners du
Ok, c'est logique. Puis dirigez SQL dans un modèle de ressource :)
Zifius
5

Je ne sais pas si c'est quelque chose de particulier à 1.9.0.0 mais je n'ai pas pu obtenir quoi que ce soit Mage::getConfig()->getNode()->stores->{$code}ou Mage::getModel('core/store')->loadConfig($code)(qui appelle en fait Mage::getConfig()->getNode()->stores->{$code}) pour retourner quoi que ce soit.

La première était proche ... avec un changement subtil de forme, cela donne un résultat, bien que ce soit plus d'informations que nécessaire:

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

Ce qui a fonctionné pour moi, pour obtenir juste l'ID du magasin, était le suivant:

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

... toujours inefficace, bien sûr, en chargeant toutes ces informations de configuration juste pour un petit nombre. Mais bon, c'est Magento pour vous.

Doug McLean
la source
4

Les éléments suivants devraient fonctionner:

<?php echo Mage::getModel('core/store')->loadConfig($code)->getId(); ?>
Mayers
la source
Merci pour la réponse, bien que cela semble être le même que le précédent :)
David Manners
Oui, je l'ai remarqué après avoir posté ma réponse :)
Mayers