2010-12-07 3 views
1

나는이 질문을 어제 Static block on home page in Magento에게 물어 보았습니다.이 질문은 cms/블록을 기존 블록 (콘텐츠의 경우)에 연결하는 것에 대한 제 질문으로 대답했습니다.Magento에서 새 블록 만들기

하지만 이제 내 자신의 블록을 만드는 방법을 알고 싶습니다. 내 cms.xml 파일

<reference name="home_flash"> 
    <block type="cms/block" name="home-page-flash" before="content"> 
    <action method="setBlockId"><block_id>home-page-flash</block_id></action> 
    </block> 
</reference> 

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

그리고이하지만이 작동하지 않습니다 :

내로 .phtml 템플릿이 있습니다.

나는 또한에서 page.xml 파일 (빵 부스러기 선언을 복사하여), 내 자신의 블록 타입을 만들려고 한 : 파일이 존재하지만 렌더링되지 않는지

<block type="page/html_home_block" name="home_block" as="home_block" template="page/template/home_block.phtml"/> 

.

그러나 나는이 같은 블록을 참조 할 때 :

<block type="page/html_breadcrumbs" name="home_block" as="home_block" template="page/template/home_block.phtml"/> 

그것은 내 집 블록 템플릿을 렌더링하지만, 원래 CMS/블록은 연결되어 있지 않습니다.

모든 다른 사례가 어떤 일이 일어나고 있는지를 보여주고 내 지식의 차이를 강조하여 누군가가 대답 할 수있게되기를 바랍니다. 새로운 "home_block"유형을 어딘가에 "등록"해야합니까?

+0

당신이 달성하고자하는 것이 100 % 명확하지 않아서 질문을 이해하기가 어렵습니다. 최종 결과가 달성하고자하는 것이 무엇인지 설명 할 수있을뿐만 아니라 사물에 대해보다 구체적으로 설명 할 수 있습니까? (즉, "my .phtml template": 어떤 phtml 템플릿입니까?) –

+0

@Alan Storm, 댓글 주셔서 감사합니다. 질문이 길었다는 사실을 알고 끝까지 한 줄 질문으로 요약하려고했습니다. @ clockworkgeek 내 질문에 대답했고 그것은 내가 Magento의 MVC 비트에 대한 요점을 놓치고 있었어 밝혀 지! –

답변

5

자신 만의 블록을 만들지 않고도 사용할 수있는 많은 블록이 있습니다. 이 경우에는 템플릿이 필요 없으며 필요한만큼 많은 자식 블록을 가질 수 있기 때문에 core/text_list이 적합하다고 생각합니다. 아는 가치

<?xml version="1.0"?> 
<layout version="0.1.0"><!-- All layout files start with this --> 
    <cms_index_index><!-- Index directive is the same as "home" page --> 
     <reference name="root"><!-- For more blocks that can be referenced see "default" directive --> 
      <block type="core/text_list" name="home_flash"> 
       <block type="cms/block" name="home-page-flash"> 
        <action method="setBlockId"><block_id>home-page-flash</block_id></action> 
       </block> 
      </block> 
     </reference> 
    </cms_index_index> 

    <!-- More directives might go here --> 

</layout> 

다른 유용한 블록 유형은 core/text 각각 Mage_Core_Block_TextMage_Core_Block_Template에 해당 core/template 있습니다. 그들은 가장 많이 쓰게됩니다.
집에서 만든 블록 유형 page/html_home_block에는 일치하는 이름의 PHP 클래스가 없으므로 자신 만의 고유 한 클래스를 만들었다면 Magento가 이미 사용하고 있으므로 page이라는 접두어를 사용할 수 없습니다.

블록을 만들려면 레이아웃 파일에 <block> 태그 만 있으면됩니다.
블록 유형을 만들려면 PHP 클래스를 작성하고 네임 스페이스를 지정하고 모듈의 일부로 선언해야합니다.
기존 블록에 추가하려면 <reference> 태그를 사용할 때입니다.

Magento Knowledge Base에는 Theming & Design을 비롯한 여러 훌륭한 기사가 있습니다.

+0

완전하고 완전한 답변을 주셔서 감사합니다. 기술 자료에 대한 간단한 설명이 없거나 머리를 쓰지 않는 문서를 찾기 위해 고심하고 있습니다. 지금 기존 블록을 살펴보고 MVC 비트의 다른면을 찌를 수도 있습니다. –