Как получить данные от config.xml модуля
В модуле A Мне нужно получить некоторые данные из файла config.xml модулей B и C. Существуют ли какие-либо методы или классы, предназначенные для этого?
Особенно мне нужно получить XML-структуру и значения узла <default>
, чтобы я мог восстановить значения по умолчанию конфигурации системы модулей B и C. Ниже приведен пример из 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 файлы всех модулей, так что Мне было интересно, может быть, эти данные уже кэшированы и могут быть каким-то образом извлечены из кэша? Если нет, то как получить его программно?
2 answers
Вы можете получить определенный узел из конфигурации следующим образом.
$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
для поиска определенного узла.
Вы можете получить доступ к config.xml
любого модуля через Mage::getConfig
. Все XML-файлы объединены в одну строку, поэтому вы не можете указать точный модуль, но вы можете фильтровать по пути тегов.
$default_xml = Mage::getConfig()
->loadModulesConfiguration('config.xml')
->getNode('default/wishlist')
->asXML();
Возможно, вам потребуется добавить зависимость в модуле A от модуля B и C, чтобы убедиться, что их config.xml
загружается при выполнении вышеуказанного кода.