コードからストアIDを取得する方法


23

だから私は店のコードを持っているので、私は単に店のIDが本当に欲しいです。IDのみが必要なため、ストアを完全にロードするのは望ましくありません。

私が持っていたアイデアの1つは、コレクションを介してこれをロードすることでしたが、ヘルパーまたはリソースを介して別の方法があるかどうか疑問に思っていました。


3
私にとってこれは完璧に動作します:Mage::app()->getStore($storeCode)->getId();
Hatef

回答:


10

これをテストしていませんがloadConfig、モデルのメソッドを使用してIDを取得できることを覚えているようですMage_Core_Model_Store

その後getId()、モデルを呼び出してIDを取得できます。

このloadConfigメソッドは、ロードされた構成を使用してストアデータを取得します

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

次の値が得られます

  • id
  • コード
  • website_id

3
奇妙な-私(Magento 1.9.0.0)の場合、これはNULLを返します。どのような私のために働いたことだったMage::getConfig()->getNode('stores')->{$code}
ダグ・マクリーン

またはさらに良い:Mage :: getConfig()-> getNode( 'stores')-> {$ code}-> {'system'}-> {'store'}-> {'id'};
アンスマン

@dougMcLeanはEE 1.14.1.0でも同じ問題を抱えていました。これは、「config」キャッシュが有効になっている場合に表示されます-Magentoキャッシュの問題のように見えます。サンダーは、Mage :: getConfig()-> getNode( 'stores')-> {$ code}を使用して回答を編集するので、ソリューションは有効/無効の両方のキャッシュケースで機能しますか?
ケイトスイコフスカヤ16

私はマルチストアを持っていますが、ストアIDを使用して選択したストア製品を表示するにはどうすればよいですか?私のコード-> justpaste.it/6fi1f-
宝石

21

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

これが最も簡単な方法ではありませんか?


2
IDのみが必要なときに、ストア全体をロードすることは、最も単純かもしれませんが、サイトのパフォーマンスにとっては最良ではないかもしれません。
デビッドマナーズ

わかりました。次に、リソースモデルでSQLを指示します:)
Zifius

5

これが1.9.0.0特有のものかどうかはわかりませんが、どちらMage::getConfig()->getNode()->stores->{$code}Mage::getModel('core/store')->loadConfig($code)(実際にはを呼び出す Mage::getConfig()->getNode()->stores->{$code})を取得できませんでした。

最初は近くにありました...フォームに微妙な変更があり、これは結果を取得しますが、必要以上の情報があります:

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

ストアIDを取得するために私にとってうまくいったのは、これでした:

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

...もちろん、非効率的です。1つの小さな数の設定情報をすべて読み込むだけです。しかし、それはあなたにとってMagentoです。


4

以下が動作するはずです:

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

答えてくれてありがとう、これは以前のものと同じように見えますが:)
デビッドマナー

はい、回答を投稿した後に気づきました:)
Mayers
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.