モジュールのconfig.xmlからデータを取得する方法


14

モジュールAでは、モジュールBおよびCのファイルconfig.xmlからデータを取得する必要があります。これ専用のメソッドまたはクラスはありますか?

特に<default>、モジュールBとCのシステム構成のデフォルト値を復元できるように、ノードのXML構造と値を取得する必要があります。以下は、Wishlistモジュールのconfig.xmlの例です。

<config>
    <default>
        <wishlist>
            <general>
                <active>1</active>
            </general>
            <email>
                <email_identity>general</email_identity>
                <email_template>wishlist_email_email_template</email_template>
            </email>
        </wishlist>
    </default>
</config>

私が知る限り、Magentoはすべてのモジュールのconfig.xmlファイルをロードするので、このデータはすでにキャッシュされており、キャッシュから何らかの方法で取得できるのではないかと思っていましたか?そうでない場合、プログラムで取得する方法は?

回答:


20

このような設定から特定のノードを取得できます。

$value = Mage::getConfig()->getNode('default/wishlist/general/active');

これはの値を取得する必要があります

<default>
    <wishlist>
        <general>
            <active>1</active> <!-- this value -->
        </general>
    </wishlist>
</default>

問題は、特定のファイルから値を取得しないことです。マージされた構成から値を取得します。

特定のファイルの値が必要な場合は、これを実行します。

$configFile = Mage::getConfig()->getModuleDir('etc', 'Mage_Wishlist').DS.'config.xml';
$string = file_get_contents($configFile);
$xml = simplexml_load_string($string, 'Varien_Simplexml_Element');

あなたにはあります$xml変数、ロードされたXMLファイルを、あなたが使用することができxpath、特定のノードを検索します。


値もの列pathで定義されている場合、DBから取得できますcore_config_data。ただし、XMLの構成ファイルのみ(これがデフォルトです)
Victor Aguilar

6

config.xmlから任意のモジュールにアクセスできますMage::getConfig。すべてのXMLは1つの文字列にマージされるため、実際に正確なモジュールを指定することはできませんが、タグパスでフィルタリングできます。

$default_xml = Mage::getConfig()
   ->loadModulesConfiguration('config.xml')
   ->getNode('default/wishlist')
   ->asXML(); 

あなたはモジュールに依存関係を追加する必要があるかもしれませんAモジュールにBC必ず彼らの作るためにconfig.xmlあなたは上記のコードを実行しているときにロードされます。

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