2011-04-13 4 views
0

다른 phtml 페이지의 특정 위치에 새 phtml 블록을 배치하려고하는데 예상 한 결과를 얻지 못하고 있습니다. 조언을 주시면 감사하겠습니다.childHtml 블록의 정확한 위치 (예기치 않은 결과)

특히, 내 모듈의 XML 레이아웃 파일에 카트 페이지에 대한 새로운 childHtml 블록을 생성 : 나는 그것을 위치 싶었던 내 수정 checkout/cart/shipping.phtml 템플릿에 $this->getChildHtml('delivery')에 전화를했다

<layout version="0.1.0"> 
    <checkout_cart_index> 
     <reference name="head"> 
      <action method="addJs"><script>varien/product.js</script></action> 
      <action method="addItem"><type>js_css</type><name>calendar/calendar-win2k-1.css</name><params/><!--<if/><condition>can_load_calendar_js</condition>--></action> 
      <action method="addItem"><type>js</type><name>calendar/calendar.js</name><!--<params/><if/><condition>can_load_calendar_js</condition>--></action> 
      <action method="addItem"><type>js</type><name>calendar/calendar-setup.js</name><!--<params/><if/><condition>can_load_calendar_js</condition>--></action> 
     </reference> 
     <reference name="content"> 
      <block type="delivery/frontend_checkout_cart_delivery" name="delivery.container" as="delivery" template="unleaded/delivery/checkout/cart/shipping/delivery.phtml"/> 
      <block type="core/html_calendar" name="delivery_html_calendar" as="delivery_html_calendar" template="page/js/calendar.phtml"/> 
     </reference> 
    </checkout_cart_index> 
</layout> 

다음을

:

.... 
<?php foreach ($_shippingRateGroups as $code => $_rates): ?> 
    .... 
    <?php foreach ($_rates as $_rate): ?> 
     .... 
     <li> 
     <?php if ($_rate->getCode() == 'delivery'): ?> 
      <?php echo $this->getChildHtml('delivery'); ?> 
     <?php endif; ?> 
     </li> 
     .... 
    <?php endforeach; ?> 
    .... 
<?php endforeach; ?> 
.... 

내가 원했던/예상 한 것은 내 블록 출력을 삽입 한 곳을보고 대신 페이지 맨 아래에 출력되었습니다 (스크린 샷 참조). 나는 거의 실수가 XML/레이아웃 기반의 실수라고 확신하지만, 나는 무엇을 모르는가? childHtml called inside ul, output at end of page

답변

0

당신은 checkout.cart.shipping 블록 내에서 getChildHtml() 부르지 만, content에 새 블록을 추가 할 수 있습니다. 대신

<reference name="content"> 

... 당신은 새로운 블록이 어떤 블록인지 말할 필요가 있습니다.

<reference name="checkout.cart.shipping"> 
+0

감사합니다. 'core/html_calendar' 블럭을'content'의 자식으로 만들고'delivery/frontend_checkout_cart_delivery' 블럭을'checkout.cart.shipping'의 자식 블럭을 매력처럼 작동 시켰습니다. 이전에 '별명'별칭을 사용하여 이전에 시도했지만 실제로 작동하지 않는다고 생각합니다. 다시 한번 감사드립니다. –

+0

당신을 진심으로 환영합니다. – clockworkgeek

관련 문제