system.xml
ファイルは、グローバル設定とマージされません。これらは、Magentoがバックエンド管理アプリケーションのユーザーインターフェイスを構築するときにのみロードされます。
System -> Configuration
バックエンド管理アプリケーションのセクション。それ以外に、アプリケーションはそれらのための使用を持っていません。
ラベルを取得する場合は、完全にsystem.xml
の設定を読み込む必要があります。このようなものはうまくいくはずです。このスレッドに別の答えで述べたように
//load and merge `system.xml` files
$config = Mage::getConfig()->loadModulesConfiguration('system.xml');
//grab entire <sections/> node
var_dump($config->getNode('sections')->asXml());
//grab label from a specific option group as a string
var_dump((string)$config->getNode('sections/dev/groups/restrict/label'));
は、getSection
方法では、このロジックの一部をラップadminhtml/config
モデルクラスもありますので、あなたはこのような何かを行うことができます。
Mage::getSingleton('adminhtml/config')->getSection('dev')->groups->my_module->label
あなたはgetSection
#File: app/code/core/Mage/Adminhtml/Model/Config.php
public function getSections($sectionCode=null, $websiteCode=null, $storeCode=null)
{
if (empty($this->_sections)) {
$this->_initSectionsAndTabs();
}
return $this->_sections;
}
のソースを見て、_initSectionsAndTabs
#File: app/code/core/Mage/Adminhtml/Model/Config.php
protected function _initSectionsAndTabs()
{
$config = Mage::getConfig()->loadModulesConfiguration('system.xml')
->applyExtends();
Mage::dispatchEvent('adminhtml_init_system_config', array('config' => $config));
$this->_sections = $config->getNode('sections');
$this->_tabs = $config->getNode('tabs');
}
に介してコールスタックをたどる場合は、このラッパー・メソッドは、最終的にloadModulesConfiguration
メソッド自体を呼び出す表示されます。 old bit of meta-programming in the configuration you can read about here(a longer series on configuration loadingの一部)の場合は、追加のapplyExtends
が追加されます。 (自己リンク、StackOverflowの答えが長すぎます)。私は個人的にコンフィギュレーションから値を取得し、これを使用することはありません
理由は、あなたがこのコール
Mage::dispatchEvent('adminhtml_init_system_config', array('config' => $config));
を作るときに、このイベントは、あなたがしていると仮定してシステム内のコードを引き起こす可能性が派遣のイベントですシステム構成システムをバックエンド管理コンソール領域にロードする。 の場合は、XMLツリーを読んでください。単にあなた自身で読み込んで値を読むことは、行く方法のようです。もちろん、ユースケースはさまざまです。
これを投稿した直後に別の解決策が見つかりました。違いは何ですか? getSingleton( 'adminhtml/config')の代わりにloadModulesConfigurationを使用する方が良い理由は何ですか? – Benubird
@Benubirdもっと情報と文脈で答えを更新しました。短いバージョン:見つかったテクニックは、 'loadModulesConfiguration'メソッド自体を使用します。 –