2013-06-18 2 views
0

page.xml이 처음 처리되고 local.xml이 마지막으로 처리되는 레이아웃 디렉토리에는 여러 레이아웃 파일이 있습니다. 그러나 패키지 레이아웃 XML 객체를 생성 할 때 해당 디렉토리에있는 다른 XML 파일 중 어떤 파일을 사용하는지 확인하는 방법이 나에게 불분명합니다. 아마도 다른 frontName + 컨트롤러 이름 + 작업 이름에 대해 이러한 파일의 다른 하위 집합과 함께 묶을 것입니다. 또한 이들이 함께 묶인 순서는 추가 된 블록을 표시하는 Mage_Core_Block_Text_List와 같은 블록에 영향을 줄 수 있습니다.Magento : 패키지 레이아웃 XML 객체를 생성하는 데 사용되는 파일은 무엇입니까?

따라서 특정 페이지 요청이 주어진 foo.xml 레이아웃 파일을 묶어서 최종 페이지 레이아웃 XML이 파생 된 패키지 레이아웃 XML 객체를 생성하는지 여부를 어떻게 확인할 수 있습니까?

감사합니다.

답변

1

모듈 개발자가 레이아웃에 레이아웃 파일을 추가하고 구성을로드 및 병합 한 다음 레이아웃 업데이트 개체가 병합 된 구성에서로드하여로드 할 파일을 결정한 이후로 수많은 파일이 관련되어 있지만, 다시 아마이

#File: app/code/core/Mage/Core/Model/Layout/Update.php 
public function getFileLayoutUpdatesXml($area, $package, $theme, $storeId = null) 
{ 
    //... 
    $fileStr = file_get_contents($filename); 
    $fileStr = str_replace($this->_subst['from'], $this->_subst['to'], $fileStr); 
    $fileXml = simplexml_load_string($fileStr, $elementClass); 
    //... 
} 

로그인을 찾고 또는 $filename 변수를 위해서 var_dump 당신은 마 젠토로드하려고하는 파일을 볼 수 있습니다.

+0

감사합니다. 기본적으로 사용 가능한 모든 파일입니다. 나는 거기에있는 논리의 많은 부분을 얻지 못한다.하지만 모든 것을 묶어주는 것처럼 보인다. –

+0

@JasonPosit 맞습니다. Magento는 모든 ** 파일을 캐시되지 않은 요청마다 패키지 레이아웃에로드합니다. 그런 다음 레이아웃 핸들을 사용하여 특정 요청에 대해 어느 노드를 사용해야하는지 결정합니다. –

관련 문제