9

カスタム モジュール用の電子メール テンプレートを作成し、そのファイルをapp/locale/en_US/template/emailモジュール構成 XML ファイルに配置して構成しました。ここで、コードを使用してコントローラーでそのテンプレートを取得したいと考えています。私が試してみました :

$emailTemplate  = Mage::getModel('core/email_template')->loadByCode('custom_template');

NULLただし、メール テンプレートが返されます。私のモジュールの電子メール テンプレートの構成は次のとおりです。

<global>
    <template>
        <email>
            <custom_template>
                <label>Some custom email template</label>
                <file>custom_template.html</file>
                <type>html</type>
            </custom_template>
        </email>
    </template>
</global>

私は何が欠けていますか?

**編集**

このコードを見つけましたが、行

$template_collection =  Mage::getResourceSingleton('core/email_template_collection');

空のコレクションを返します。Magento の管理ソースを調べてみたところMage_Adminhtml_Block_System_Email_Template_Grid、同じ行使用してコレクションを取得していることがわかりました。明らかに、Magento では機能しますが、私のコードでは機能しません。なんで?

4

2 に答える 2

20

投稿したPHP

$emailTemplate  = Mage::getModel('core/email_template')->loadByCode('custom_template');

は、データベースから電子メール テンプレートを読み込みます。具体的にはcore_email_template表から。ファイル システムに配置したテンプレートは、既定のテンプレートです。loadDefaultメソッドを使用してロードできるはずです。

$emailTemplate  = Mage::getModel('core/email_template')->loadDefault('custom_template');
于 2012-05-11T03:24:19.643 に答える
5

既存の Magento 電子メール テンプレートに基づいて Magento 電子メールを送信する方法の完全なサンプル コードを探している場合は、次のコードが適切に機能します。XML 構成は必要ありません。

// This is the name that you gave to the template in System -> Transactional Emails
$emailTemplate = Mage::getModel('core/email_template')->loadByCode('My Custom Email Template');

// These variables can be used in the template file by doing {{ var some_custom_variable }}
$emailTemplateVariables = array(
'some_custom_variable' => 'Hello World'
);

$processedTemplate = $emailTemplate->getProcessedTemplate($emailTemplateVariables);

$emailTemplate->setSenderName('Joe Bloggs');
$emailTemplate->setSenderEmail('test@test.com');
$emailTemplate->setTemplateSubject("Here is your subject");

$emailTemplate->send('recipient@test.com', 'Joanna Bloggs', $emailTemplateVariables);
于 2015-10-05T16:02:42.793 に答える