Magento-手紙を送る

多くの場合、ストアユーザーに追加情報を記載したアラートまたはレターを送信する必要があります。 多くの人がサイトから手紙を送る必要性/有用性を認識していると思います。 ここで、 Magento開発者は、メールを操作するためのかなり強力なメカニズムを提供するために最善を尽くしました。

何がそんなに特別なのですか?


そのため、「 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要素には、 labelfiletypeの 3つの子があります


$ 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のすべての利点を活用できます。

Source: https://habr.com/ru/post/J76546/


All Articles