2012-07-16 4 views
1

나는 상점을위한 새로운 이메일 템플릿을 만드는 중입니다.Magento, 새로운 주문 이메일 템플릿 합계

내 유일한 문제는 95 %의 템플릿이 있는데, 주문 항목을 보여주는 테이블에서 총계가 들어있는 파일을 찾을 수없는 것입니다. 아래의 문제를 보여주는 이미지에 링크되어 있습니다.

enter image description here

당연히 나는 그것 때문에 이메일하기위한 것이며, 또한 왼쪽에있는 레이블을 변경하기 위해이 지역에 일부 인라인 코드를 추가 할 수 있도록하고 싶습니다. 나는이 다음 호출 무엇을 파일로 나는 손실에있어 다음과 같은 파일

템플릿/판매/위해 아래로 합계 영역/totals.phtml

를 추적 관리했습니다.

답변

3

당신이

layout/sales.xml:268 

를 보면 당신은 레이아웃 핸들 sales_email_order_items을 볼 수 있습니다. 그 내부에는 해당 템플릿이있는 "order_totals"블록이 있습니다. 전자 메일에 새 총계를 추가하려면 해당 전자 메일의 하위 항목으로 추가해야합니다. 275 행에서 'tax'라는 블록을 추가 한 것을 볼 수 있습니다.

totals.phtml 파일에서 foreach의 일부로 $ this-> getTotals()를 호출하는 것을 볼 수 있습니다. 이 메서드는에서 정의됩니다

Mage/Sales/Block/Order/Totals.php:281 

이것은 방금 정의 된 총계를 반환합니다. 이 데이터는 그 정의 된 Config.xml 파일이 채워지는 : 전체에 대해 정의 블록이 있는지

<global><sales><quote><totals>... 

totals.phtml 위로 점프, 그것을 확인한다. 이것은 config.xml 파일의 필드입니다. 커스터마이징하려는 합계 모델이 있다면 그렇게 할 수 있습니다.

그렇지 않으면 페이지가 렌더링되기 전에 (44 행의 _beforeToHtml() 호출) 자식 블록을 중개하고 'initTotals'메서드에 응답하면 해당 메서드를 호출합니다. 이 메서드는 합계를 나타내는 개체를 만들어 부모에게 추가해야합니다.

public function initTotals() 
{ 
    if ((float)$this->getParentBlock()->getSource()->getMytotalAmount() == 0) { 
     return $this; 
    } 
    $total = new Varien_Object(array(
     'code'  => $this->getNameInLayout(), 
     'block_name'=> $this->getNameInLayout(), 
     'area'  => $this->getArea() 
    )); 
    $after = $this->getAfterTotal(); 
    if (!$after) { 
     $after = 'subtotal'; 
    } 
    $this->getParentBlock()->addTotal($total, $after); 
    return $this; 
} 

나는 희망이 도움이 : 예를 들어, 다음 (I 공개적으로 게시 할 수 없습니다 코드를 기반으로) 내가 최근에 쓴 합계 블록에 대한 코드입니다.