모듈의 config.xml에서 데이터를 얻는 방법


14

모듈 A 에서 모듈 BC의 config.xml 파일에서 일부 데이터를 가져와야 합니다. 이를위한 메소드 나 클래스가 있습니까?

특히 <default>모듈 B와 C의 시스템 구성 기본값을 복원 할 수 있도록 XML 구조와 노드 값을 가져와야합니다. 아래는 위시리스트 모듈의 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특정 노드를 찾을 수 있습니다.


이 컬럼에 정의 된 경우 값은 DB에서 검색 할 수 path있는 core_config_data도. 그러나 XML의 설정 파일에서만 (이것이 기본값입니다)
Victor Aguilar

6

config.xml통해 모든 모듈에 액세스 할 수 있습니다 Mage::getConfig. 모든 XML은 하나의 문자열로 병합되므로 정확한 모듈을 지정할 수는 없지만 태그 경로를 필터링 할 수 있습니다.

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

당신은 모듈에 종속성을 추가해야 할 수도 있습니다 모듈에 BC 확실히 그들의 수 있도록 당신이 위의 코드를 실행 할 때로드됩니다.config.xml

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.