何がそんなに特別なのですか?
そのため、「 mail()関数を使用しないのはなぜですか?」 結局のところ、それはそのような目的のためだけに設計されています。」 もちろん、特に誰かが彼女なしでは生きられない場合、神自身がメールを注文しました。 手紙を送信するためのmagento-vskyメカニズムを提供するものは何ですか? 最初の、そして私の意見では、最も重要な利点はテンプレートの使用です。 テンプレートは通常のhtmlファイルで、少し追加されています(ただし、以下に詳細があります)。 テンプレートには任意のデザインを含めることができます。レイアウトデザイナーはphpコードを解析して、デザイナーのアイデアを具体化しようとすることはなくなります。 また、テンプレート内の使用可能なモジュールのいずれかにブロックを追加することもできます(それらを初期化することを忘れないでください)。これにより、開発の速度を上げることができます。
どこから始めますか?
そのため、 Mage_Core_Model_Email_TemplateモデルのsendTransactional()メソッドは、手紙の送信に従事しています
Mage::getModel( 'core/email_template' )
->setDesignConfig(array( 'area' => 'frontend' , 'store' =>$storeId))
->sendTransactional(
$templateId,
$sender,
$recepientEmail,
$recepientName,
$templateData);
* This source code was highlighted with Source Code Highlighter .
$ storeId-ストア識別子(はい、 Magentoは複数のストアを開くことができます。 ここでそれについて読んでください )
$ templateId-テンプレート識別子。xml-configから取得される文字列識別子か、データベースから取得される整数のいずれかです。
整数の識別子を使用すると、すべてが簡単になります。 システム>トランザクションメールの管理セクションでそれらを確認し、必要に応じて独自のテンプレートを追加できます。 文字列識別子は、 グローバル/テンプレート/電子メールセクションのモジュール設定にあります 。 例えば
< global >
< template >
< email >
< customer_create_account_email_template translate ="label" module ="customer" >
< label > New account </ label >
< file > account_new.html </ file >
< type > html </ type >
</ customer_create_account_email_template >
</ email >
</ template >
</ global >
* This source code was highlighted with Source Code Highlighter .
customer_create_account_email_templateは私たちの識別子です。 ご覧のとおり、 customer_create_account_email_template要素には、 label 、 file 、 typeの 3つの子があります 。
- label-テンプレートの名前
- file-現在のロケールに相対的なテンプレートファイルへのパス(デフォルトでは、これはapp / locale / en_US / template / emailです)
- type-テンプレートタイプ(テキストまたはhtmlのいずれか)
$ sender-レターの送信者は、連想配列として表すことができます。例:
$sender = array('email' => 'sender@example.com', 'name' => 'Sender Name');
または、Magentoの設定から取得します。ほとんどの場合、 [システム]> [設定]> [メールアドレスの保存]セクションの[管理]セクションから取得します。
$sender = Mage::getStoreConfig('customer/create_account/email_identity');
この例では、パスは、[ システム]> [構成]> [電子メールアドレスの保存]セクションの[管理]セクションの[ 一般的な連絡先設定]につながります。
$ recepientEmail-メール受信者のメール
$ recepientName-メッセージ受信者の名前
$ templateDataは、 テンプレートに渡す必要のあるデータを含む連想配列です。 例:
$templateData = array('name' => ' ', 'link_url' => 'http://google.ru', 'items_collection' => $items, 'phone_number' => '11122233');
メールテンプレート
上で書いたように、レターテンプレートは、少し追加されたhtmlファイルです。 したがって、テンプレートは見出しで始まり、次のように文字の主題を示します。
任意のhtmlコード、つまり ヘッダーの後に、手紙の本文を入れます。
…
$ templateDataに入れたデータの使用方法は? とても簡単です。 次の形式{{var <key_name>}}の構造をテンプレートに挿入する必要があります。 例えば
< a href ="{{var link_url}}" > {{var name}} </ a >
* This source code was highlighted with Source Code Highlighter .
出力では次のようになります。
< a href =” http: // google . ru ” > < a >
* This source code was highlighted with Source Code Highlighter .
別の便利な機能は、テンプレートでのレイアウトの使用です。 つまり モジュールでレイアウトを説明し、後でレターで使用できます。 たとえば、モジュール文字列のmymodule.xmlレイアウトをconfigに追加する場合
< mymodule_email_someitems >
< block type ="mymodule/email_items" name ="items" template ="email/mymodule/items.phtml" />
</ mymodule_email_someitems >
* This source code was highlighted with Source Code Highlighter .
次のデザインをテンプレートに追加すると、レイアウト内にブロックを表示できます。
{{layout handle="mymodule_email_someitems" items=$items_collection}}
レイアウトにデータが必要な場合は、 {{layout}}コンストラクトの追加属性で渡すことができます。この場合、これはitemsパラメーターです。
そして、レターテンプレートについて最後に話したいのは条件式です。 デザインを使用して説明します。
{{depend condition}}
,
{{/depend}}
条件値がtrueの場合、dependブロックの内容が表示されます。 例:
{{depend phone_number}}
{{var phone_number}} – .
{{/depend}}
これがメール送信の実装方法です。 この方法により、このすばらしいCMSのすべての利点を活用できます。