Abrufen des Konfigurationswerts für den Website-Bereich

21

Wie kann ich einen Konfigurationswert für eine bestimmte Website erhalten?

Es gibt Mage::getStoreConfig()aber keine Mage::getWebsiteConfig().

bearbeiten :

Ich exportiere Konfigurationsdaten auf Website-Ebene - also möchte ich irgendwie die Website-Bereichseinstellung ...

Alex
quelle

Antworten:

16

Normalerweise solltest du das nicht tun. Mage::getStoreConfig()gibt automatisch den Store-Wert, den Website-Wert, den globalen Wert oder den Standardwert zurück, abhängig von der Konfiguration des Feldes.

Wenn Sie den Store-Wert jedoch wirklich ignorieren und den Website-Wert abrufen müssen, können Sie dies folgendermaßen tun:

Mage::app()->getWebsite()->getConfig('.../.../...')
Anders Thirsgaard Rasmussen
quelle
1
Vergessen Sie nicht, die websiteId hinzuzufügen. ie <br/>Mage::app()->getWebsite($websiteId)->getConfig('web/unsecure/base_url')
Eduardo
8

Dies ist ein seltener Fall, da Einstellungen auf Speicherebene vererbt werden und normalerweise getStoreConfig()die Websiteeinstellungen berücksichtigen.

Sie können verwenden Mage_Core_Model_Website::getConfig()- aber beachten Sie, dass es einen geringfügigen Unterschied gibt, Mage_Core_Model_Store::getConfig()wo auch einige Verarbeitungsschritte ausgeführt werden (z. B. das Ersetzen von {{...}}) -, dass diese Art der Ersetzung nicht auf der Website-Ebene ausgeführt wird.

Wenn der Wert nur auf Website-Ebene geändert werden kann, besteht eine andere Option darin, nur einen zufälligen Speicher der Website abzurufen und dann zu verwenden getStoreConfig().

Alex
quelle
6

Dies kann unter Verwendung des spezifischen Website-Codes abgeleitet werden, falls bekannt.

$value = Mage::getConfig()->getNode('websites/[website_code]/section/group/field');
var_dump($value[0]);
benmarks
quelle
Dies sollte als die richtige Antwort markiert werden. Sie können Websites von Mage::app()->getWebsites()und den Code von der Website erhalten:$website->getCode()
Michael
Gutes Zeug @benmarks. Ich stimme zu, dies sollte als die richtige Antwort markiert werden. Ich weiß, dass es nicht üblich ist, einen Konfigurationswert über eine Website abzurufen, aber in einigen Fällen ist dies der Fall. Ich musste dies beispielsweise tun, wenn ein Export von Produkten über eine Website in einer Cron-Job-Task ausgeführt wurde.
Eduardo
2

Ich könnte mich irren, aber soweit ich mich erinnere, ist der Konfigurationsumfang immer an Geschäfte gebunden. Wenn Sie einen Wert auf Websiteebene festlegen, ist dieser in jedem Geschäft dieser Website verfügbar, sofern Sie auf Geschäftsebene keinen anderen Wert festlegen.

Angenommen, Sie haben Website A und Geschäft A1 und A2 sind Geschäfte für diese Website. Angenommen, A hat für eine bestimmte Eigenschaft den Wert 5

Dann Mage::getStoreConfig()wird 5 für diese Eigenschaft sowohl für A1 als auch für A2 zurückgegeben. Wenn Sie die Eigenschaft für A1 auf 3 setzen, Mage::getStoreConfig()wird für diese Eigenschaft 3 für A1 und 5 für A2 zurückgegeben.

mpaepper
quelle
Sie haben vollkommen recht - aber: Ich exportiere Konfigurationsdaten auf Website-Ebene - also möchte ich irgendwie die Website-Bereichseinstellung ... Ich weiß, dass dies ein recht seltener Fall ist.
Alex
@Alex Das solltest du wohl auch in deiner Frage erwähnen;)
mpaepper