패키지의 여러 local.xml 레이아웃 파일


13

패키지에 두 가지 테마가 있다고 가정하십시오.

  • 베이스 (기본으로 설정)
  • 어린이 (주제로 설정)

둘 다 레이아웃 폴더에 local.xml을 포함합니다. Child 테마의 local.xml 만로드되므로 Base local.xml의 CSS, JS 또는 레이아웃 업데이트는로드되지 않습니다.

page.xml을 사용하지 않고 (따라서 local.xml과 동일한 기능을 제공하지만 상속 가능), Base와 Child에 대한 xml 파일을 어떻게 호출합니까?

사용 가능한 xml 파일 (예 : base-local.xml)을 추가 할 목적으로 만 모듈을 구축해야합니까?

답변:


9

당신은 맞습니다. 그리고 이것은 여러 테마를 가진 사이트에 대해 유효하고 사용 된 접근 방식입니다. 상점 핸들 및 테마 핸들과 같은 다른 상점 범위에 적용되는 레이아웃 업데이트에 사용할 수있는 몇 가지 추가 (아주 알려지지 않은) 옵션이 있습니다.

액션 컨트롤러 슈퍼 클래스 Mage_Core_Controller_Varien_Action(링크)에서 :

public function addActionLayoutHandles()
{
    $update = $this->getLayout()->getUpdate();

    // load store handle
    $update->addHandle('STORE_'.Mage::app()->getStore()->getCode());

    // load theme handle
    $package = Mage::getSingleton('core/design_package');
    $update->addHandle(
        'THEME_'.$package->getArea().'_'.$package->getPackageName().'_'.$package->getTheme('layout')
    );

    // load action handle
    $update->addHandle(strtolower($this->getFullActionName()));

    return $this;
}

코드가 'deutsch'이고 테마 구성이 'default'패키지 인 'german'테마 인 상점의 경우 대부분의 뷰에서 사용하는 거의 모든 뷰에 다음 핸들이 적용됩니다.

<STORE_deutsch>
<THEME_frontend_default_german>

구현에 의해 이러한 핸들은와 거의 같은 방식으로 활용 될 수 있습니다 <default />.


아, 그것은 도움이됩니다-내 유스 케이스는 당신이 제안하는 것과 약간 다르다고 생각합니다-여전히 '기본'테마에 local.xml이 하나 있지만 <THEME_frontend_default_german>을 사용하여 하위 테마를 타겟팅하십시오. 기본 테마 local.xml-각 하위 테마에 별도의 local.xml이 없습니까? 맞습니까, 아니면 오해입니까?
Glo

그게 다야. 불행하게도 대상 핸들은 광범위하게 적용되므로 "Store X의 catalog_product_view 페이지에 대한 루트 블록 템플릿을 업데이트 할 수 없습니다". 그러나 상점 X가 모든 페이지에 사용자 정의 JS 파일이 필요한 경우을 사용할 수 있습니다 <STORE_x><action method="addJs" block="head"><file>custom/js.js</file></action></STORE_x>.
benmarks

고마워요. 특별히 내가 염두에 둔 것은 아니지만 흥미로운 새로운 정보입니다.
Glo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.