问题
当我尝试以下列方式将一个块添加到我的交易电子邮件模板中时:
{{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
疑难解答
理论
对我来说,似乎模板继承已经破坏/没有为电子邮件实现,所以它总是在底部查找,我不能把我的模板放在那里所以我不知道如何调用它们。
可能的解决方法
非常感谢任何帮助。
赏金更新
所以我已经找到了问题,现在可能是一个简单的解决方案。
问题是我从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 :(得分: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/