2012-11-16 2 views
2

다른 phtml 파일을 수정하지 않고도 확장을 만들기 위해 사용자 정의 phtml 파일을 사용하여 간단한 블록 (단지 코어/템플릿)을 만듭니다.Magento가 ChildHtml이없는 블록을 표시합니다.

그러나 원래 템플릿을 수정하여 제외하고 표시 할 수는 없습니다. $this->getChildHtml('myblock') 것을 추가하십시오.

다른 phtml을 변경하지 않고 제 블록을 추가하고 싶습니다. 어떻게 이렇게, getChildHtml 방법없이 자동으로 블록 디스플레이를 만드는 방법?

답변

1

나는이 작업을 수행하는 방법을 알아낼를

내 자신의 레이아웃과 템플릿으로 내 모듈을 만듭니다.

레이아웃에서 부모 블록이 호출되는 섹션을 업데이트하여 내 새 블록을 먼저 삽입 한 다음 내 템플릿에서 부모 클래스를 getChildHtml()을 통해 호출하므로 클라이언트의 파일 중 하나를 건드릴 필요가 없습니다 . 모두

-2

특정 파일 만 모든 하위 노드를 표시 할 수 있습니다. 즉, 대다수의 사용자는이 기능을 내장하지 않습니다.

이 기능을 사용하려면 phtml 파일에 첨부 된 블록을 렌더링 할 줄을 추가하십시오.

<?php echo $this->getChildHtml() ?> 
+0

사용자가 명시 적으로 getChildHtml를 사용하지 않고 그것을 할 방법을 묻는(). –

+0

그는 $ this-> getChildHtml ('block_id')를 사용하고 싶지 않았습니다. 그는 원래의 PHTML을 수정하지 않고 표시하기를 원합니다.이 PHTML은 모두 훌륭하고 멋쟁이입니다. 하지만 $ this-> getChildHtml ('')가 이미 호출되지 않은 한 다른 파일에 PHTML 파일을 표시 할 수는 없습니다. 그리고 제가 말했듯이 이것은 거의 파일에서 발생하지 않습니다.그는이 사용자 정의 블록이 마술처럼 보이도록 찾고 있습니다. $ this-> getChildHtml()이 없으면 레이아웃 XML의 양이 원하는 위치, 기간에 표시되지 않습니다. – Ian

1

안부, 당신은 다음과 같은 루트 블록 아래에 블록을 정의 할 수 있습니다

<reference name="root"> 
     <block type="core/template" name="custom_block" output="toHtml" template="custom/custom_block.phtml"/> 
    </reference> 

트릭은 출력 블록으로 당신의 블록을 만들기 위해 출력 = "toHtml"를 사용하는 것입니다, 출력 블록 만 자동으로 렌더링됩니다. 기본적으로 테마 루트 블록은 모든 하위 블록을 렌더링하는 유일한 출력 블록이기 때문에 루트 아래에 블록을 두는 것이 중요합니다. 이 사람을 도움이 될 것입니다 http://magebase.com/magento-tutorials/digging-deeper-into-magentos-layout-xml-part-2/

희망 :

자세히를 살펴 보려면. 건배.

0
  • 코어/텍스트 유형을 사용하십시오. 이 블록은 자동으로 렌더링됩니다. 그러나이 방법은 블록이 자체 클래스를 사용할 때 적합하지 않습니다.
  • 코어/텍스트 목록 블록은 자동으로 모든 하위 항목을 렌더링합니다. 그냥 블록을 core/text_list의 하위 파일로 만듭니다.

확인 대한 추가 정보를 원하시면이 문서 - http://nwdthemes.com/2015/05/29/render-layout-block-automatically-in-magento/

관련 문제