2013-09-23 229 views
1

問題Magento的電子郵件模板:塊模板繼承破

當我嘗試將塊添加到我的事務性電子郵件模板以下列方式:

{{block type='core/template' area='frontend' template='invent/baskettimer/email_items.phtml' record=$record}}

我碰到下面的錯誤,並沒有呈現任何內容。

CRIT (2): Not valid template file:frontend/base/default/template/invent/baskettimer/email_items.phtml

故障排除

  • 通常這種警告指向一個錯字這是打破繼承,但我有四重檢查,這應該工作。
  • 然後,我將該文件複製到基礎中,並進行了測試,結果正確。
  • 創建自定義塊並設置模板,顯示相同的錯誤。

理論

對我來說,似乎模板繼承壞了/不爲電子郵件實現的,所以它一直在尋找在基地,我不能把我的模板存在,所以我不知道如何給他們打電話。

可能的解決方法

  • 轉成HTML格式,然後將其發送到作爲一個變量來渲染塊,這個問題是我送的模型級的電子郵件和我有預渲染的一個困難時期阻止,即使有助手。
  • 使用方法呈現數據,實際上並不想這樣做,因爲它是消息/反對MVC。

任何幫助,非常感謝。


賞金更新

所以我現在已經追查下來的問題,它可能是一個簡單的解決方案。

問題是我從cronjob調用它沒有正確的存儲視圖,通過使用shell腳本複製類似的情況相當容易,然後將_appCode更改爲null。

<?php 
require_once 'abstract.php'; 

class Mage_Shell_Shell extends Mage_Shell_Abstract 
{ 

    protected $_appCode = ''; // works - remove to not work 

    /** 
    * Run script 
    * 
    */ 
    public function run() 
    { 
     Mage::getModel('invent_baskettimer/email')->sendJob(); 

    } 

} 

$shell = new Mage_Shell_Shell(); 
$shell->run(); 

所以基本上這個問題已經成爲:

如何調用block->toHtml()無論商店觀點?

+0

是'invent'你的主題?嘗試沒有主題的路徑:'baskettimer/email_items.phtml' –

+0

@SimonH No invent是自定義主題中的文件夾。 – input

+0

你是否試圖用'_theme ='yourTheme''明確地設置你的主題? '{{block type ='core/template'area ='frontend'template ='invent/baskettimer/email_items.phtml'record = $ record _theme ='yourTheme'}}' –

回答

1

沒有辦法將cronjob設置爲這樣。 Lucky magento可讓您模擬您的商店視圖,請參閱以下內容來模擬默認商店。

public function cronjob() 
{ 
    $iDefaultStoreId = Mage::app() 
     ->getWebsite() 
     ->getDefaultGroup() 
     ->getDefaultStoreId(); 

    $appEmulation = Mage::getSingleton('core/app_emulation'); 
    $initialEnvironmentInfo = $appEmulation->startEnvironmentEmulation($iDefaultStoreId); 

    .. do your stuff here .. 

    $appEmulation->stopEnvironmentEmulation($initialEnvironmentInfo); 
} 

欲瞭解更多信息,請參閱:http://inchoo.net/ecommerce/magento/emulate-store-in-magento/