IT TIP

Magento의 getChildHtml 이해

itqueen 2020. 12. 6. 22:29
반응형

Magento의 getChildHtml 이해


2columns-right.phtml의 다음 줄에서

<div class="col-main">
    <?php echo $this->getChildHtml('global_messages') ?>
    <?php echo $this->getChildHtml('content') ?>
</div>

의 내용이 어디에서 오는지 이해할 수 없습니다 <?php echo $this->getChildHtml('content') ?>.

witch .phtml 파일이 호출되어 데이터를 표시합니다. <?php echo $this->getChildHtml('content') ?>


우리가 웹 사이트의 프론트 엔드에 대해 논의하고 있다면, 당신이 요청한 특정 라인 ....

<?php echo $this->getChildHtml('content') ?>

app / design / frontend / base / default / layout / page.xml의 Magento 레이아웃 XML에 추가됩니다. Magento 버전 1.8에서는 92-94 행에 정의되어 있습니다.

<block type="core/text_list" name="content" as="content" translate="label">
    <label>Main Content Area</label>
</block>

이 블록 태그의 "type"속성을 보면 레이아웃의이 섹션이 어떤 객체 클래스인지 알 수 있습니다. "Core"모듈에서 제공되며 블록 유형 텍스트 목록입니다. 이 Mage_Core_Block_Text_List의 클래스 이름입니다. (app / code / core / Mage / Core / Block / Text / List.php). 텍스트 목록은 그 안에 추가 자식 블록을 저장하기위한 단순한 블록 컨테이너입니다. 텍스트 목록에 임의의 수의 하위 블록을 추가 할 수 있으며 추가 된 순서 또는 할당 된 순서대로 렌더링됩니다.

따라서 귀하의 질문에 답하기 위해 $ this-> getChildHtml ( 'content')의 내용을 렌더링하는보기 스크립트 (.phtml 파일)가 없습니다. 이 블록에 추가 된 블록은 자체적으로 연관된보기 스크립트를 가질 수 있습니다. 보기 스크립트가 무엇인지 알아 보려면 블록을 추가 한 레이아웃 XML을 찾아야합니다.

예를 들어, 웹 사이트 테마의 프런트 엔드에 다음 레이아웃 파일을 추가 한 경우 :

<?xml version="1.0"?>
<layout>
    <default>
        <reference name="content">
            <block type="core/template" name="my_view_script" template="hello/world.phtml" />
        </reference>
    </default>
</layout>

위의 코드는 Mage_Core_Block_Template이라는 개체 클래스가있는 블록을 'content'라는 이름의 블록에 추가합니다 (사용자가 요청한 것임). Magento는 다음 위치에서이 순서대로보기 스크립트를 찾습니다.

app/design/frontend/PACKAGE_NAME/THEME_NAME/template/hello/world.phtml
app/design/frontend/PACKAGE_NAME/default/template/hello/world.phtml
app/design/frontend/base/default/template/hello/world.phtml

가장 먼저 발견되는 것은 사용할 것입니다. 보기 스크립트를 찾을 수없는 경우 Magento는보기 스크립트를 찾을 수 없다는 오류를 var/logs/system.log(기본 로그 파일 설정)에 기록합니다. 블록에서 출력이 발생하지 않습니다.

시스템-> 구성-> (일반) 디자인의 설정에 따라 package/themeMagento가 검색 할 추가 위치 가있을 수 있습니다 . 개별 CMS 페이지에 대해 "사용자 정의 테마"필드가 변경되는 경우와 같은 다른 시나리오도 있습니다. 카탈로그 카테고리 또는 카탈로그 제품, 이러한 개별 모델의보기 페이지에는 사이트의 기본 설정보다 우선하는 추가보기 스크립트 위치 (선택한 테마와 일치)가있을 수 있습니다.

Magento는 번역 파일과 레이아웃 XML 파일을 찾을 때 이와 동일한 대체 논리를 따릅니다.

개별보기 스크립트 app/design/frontend/base/default/template/를 로컬 테마 에서 복사 (전체 디렉토리 복사 방지, 실제로 수정하려는보기 스크립트 만 복사)하고 웹 사이트 테마의 목적에 맞게 사용자 정의하는 것은 완벽하게 허용됩니다 . 그러나 업그레이드 호환 사이트를 가지려면 레이아웃 파일 을베이스에서 로컬 테마로 복사해서는 안됩니다. 그렇게하면 업그레이드 호환 관행을 따르지 않습니다. 대신 테마에 대한 XML 레이아웃 업데이트가 app/design/frontend/PACKAGE_NAME/THEME_NAME/layout/local.xml. app/design/frontend/base/default/layout/*local.xml의 적절한 XML 지침을 사용하여 제거 / 추가 / 변경할 수없는 에서 레이아웃 지침이 없습니다 .

참고 URL : https://stackoverflow.com/questions/19488885/understanding-getchildhtml-in-magento

반응형