2011-08-04 4 views
4

가능한 경우 local.xml 만 사용하여 테마를 사용자 정의하려고합니다. header.phtml을 수정하지 않고 헤더에 정적 블록을 추가하고 싶습니다. 이 코드는 콘텐츠 영역에서는 잘 작동하지만 헤더에는 적합하지 않습니다.Magento에서 xml을 사용하여 헤더에 정적 블록을 추가 할 수 있습니까?

<default> 
    <reference name="content"> 
     <block type="cms/block" name="how-it-works-button"> 
      <action method="setBlockId"><block_id>how-it-works</block_id></action> 
     </block> 
    </reference> 
</default> 

왜 그런지 알고 있습니까? 나는 내가 필요한 모든 것이 "내용"을 "머리말"로 바꾸는 것이라고 생각했지만, 내가 할 때 아무 것도 나타나지 않는다.

도움 주셔서 감사합니다.

답변

0

블록 태그에 output = "toHtml"을 추가하십시오. 나는 그것이 단지 그것이라고 생각한다.

+0

이 코드. 그러나, 내가 그것을 사용하면 정적 블록은 바닥 글 아래에도 페이지 하단에 나타납니다. 앨런 스톰 (Alan Storm)의 의견은 왜 이것이 그런지 내게 분명하게 알려주지 만 유용한 실험에 감사드립니다! –

4

블록은 core/text_list 블록 (PHP 클래스 Mage_Core_Block_Text_List)으로 알려진 특수 블록입니다. 이 블록은 추가 된 하위 블록을 자동으로 렌더링합니다.

블록은 page/html_header 블록 (PHP 클래스 Mage_Page_Block_Html_Header)입니다. 이 블록 클래스는 Mage_Core_Block_Template에서 상속되며 core/template 블록이됩니다. 템플릿 블록은 해당 phtml 템플릿이 블록을 요청할 경우 렌더링 하위 블록 만 렌더링합니다. 따라서 머리글에 블록을 추가하면 필요한 작업의 절반 만 수행하게됩니다. 맞춤 phtml 템플릿을 만들어야합니다.

이 (1.4.1.1를 게시 할 수있는 가장 간단한 방법은, 자신의 테마,

template/page/html/header.phtml 

에서 파일을 만든 다음이 파일의 끝에서 당신을 가정

<?php echo $this->getChildHtml('how-it-works-button'); ?> 

을 추가하는 것입니다 레이아웃 xml을 통해 헤더 블록에 블록을 추가 했으므로 템플릿을 렌더링해야합니다.

+1

감사합니다. 지금이 점을 이해합니다. 다른 의견이 제안한 것처럼, 출력 = "toHtml"을 블록에 추가하려고 시도했지만 이는 페이지의 맨 아래쪽에만 내용을 표시합니다. 나는 Magento가 html을 고정시킬 템플릿이 없기 때문에 이것이 있음을 알 수있다. 자세한 설명을 주셔서 감사합니다. –

1

시도해주세요.

<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('how-it-works')->toHtml() ?> 

그리고 이것은 내가 찾던 것은 단지 종류입니다 header.phtml

관련 문제