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.


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

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?


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.


4

Les éléments suivants devraient fonctionner:

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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.