2013-09-23 2 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.

Любая помощь очень ценится.


обновление Bounty

Так что я проследили вниз проблему, это, вероятно, простое решение в настоящее время.

Проблема в том, что я вызываю ее из cronjob, не имеет правильного вида хранилища, довольно легко реплицировать подобную ситуацию, используя скрипт оболочки, а затем сменив _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 Не изобретать папку в пределах настраиваемой темы. – input

+0

Вы пытались установить свою тему явно с помощью '_theme = 'yourTheme''? '{{block type = 'core/template' area = 'frontend' template = 'invent/baskettimer/email_items.phtml' record = $ record _theme = 'yourTheme'}}' –

ответ

1

Невозможно установить такой кронеб. 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/

Смежные вопросы