So erhalten Sie die Geschäfts-ID aus dem Code


23

Ich habe also den Geschäftscode und möchte wirklich einfach die Geschäfts-ID. Im Idealfall möchte ich den Shop nicht einfach vollständig laden, da ich nur die ID benötige.

Eine Idee, die ich hatte, war, dies über eine Sammlung zu laden, aber ich fragte mich, ob es einen anderen Weg über einen Helfer oder eine Ressource gab.


3
Für mich funktioniert das perfekt:Mage::app()->getStore($storeCode)->getId();
Hatef

Antworten:


10

Ich habe das nicht getestet, aber ich erinnere mich, dass Sie die ID mithilfe der Methode loadConfigim Modell erhalten könnenMage_Core_Model_Store

Danach können Sie die ID erhalten, indem Sie getId()das Modell aufrufen .

Die loadConfigMethode verwendet die geladene Konfiguration, um Speicherdaten abzurufen

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

Welches gibt Ihnen die folgenden Werte

  • Ich würde
  • Code
  • website_id

3
Seltsam - für mich (Magento 1.9.0.0) gibt dies NULL zurück. Was für mich funktioniert hat, warMage::getConfig()->getNode('stores')->{$code}
Doug McLean

Oder noch besser: Mage :: getConfig () -> getNode ('stores') -> {$ code} -> {'system'} -> {'store'} -> {'id'};
Anshuman

@dougMcLean hat das gleiche Problem bei EE 1.14.1.0. Dies wird angezeigt, wenn der "Konfigurations" -Cache aktiviert ist - sieht aus wie ein Magento-Cache-Problem. Sander, wären Sie so nett, Ihre Antwort mit Mage :: getConfig () -> getNode ('stores') -> {$ code} zu bearbeiten, damit die Lösung für beide aktivierten / deaktivierten Cache-Fälle funktioniert?
Kate Suykovskaya

Ich habe Multistore, wie kann ich ausgewählte Shop-Produkte mit Shop-ID, meinem Code anzeigen
Gem

21

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

Ist das nicht der einfachste Weg?


2
Es ist möglicherweise am einfachsten, aber möglicherweise nicht am leistungsfähigsten, den vollständigen Speicher zu laden, wenn ich nur die ID benötige.
David Manners

Ok, macht Sinn. Dann direkt SQL in einem Ressourcenmodell :)
Zifius

5

Ich weiß nicht, ob dies etwas Besonderes für 1.9.0.0 ist, aber ich konnte weder Mage::getConfig()->getNode()->stores->{$code}noch Mage::getModel('core/store')->loadConfig($code)(was tatsächlich aufruft Mage::getConfig()->getNode()->stores->{$code} ) etwas zurückgeben.

Das erste war knapp ... mit einer subtilen Änderung in der Form wird dies zu einem Ergebnis, obwohl es wahrscheinlich mehr Informationen gibt, als Sie benötigen:

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

Was für mich funktionierte, um nur die Geschäfts-ID zu erhalten, war Folgendes:

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

... ist natürlich immer noch ineffizient und lädt all diese Konfigurationsinformationen nur für eine kleine Zahl. Aber hey, das ist Magento für dich.


4

Folgendes sollte funktionieren:

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

Vielen Dank für die Antwort, obwohl dies das gleiche zu sein scheint wie das vorherige :)
David Manners

Ja, habe es bemerkt, nachdem ich meine Antwort gepostet habe :)
Mayers
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.