バージョン選択

フォーラム

メニュー

オンライン状況

23 人のユーザが現在オンラインです。 (13 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 23
もっと...

サイト内検索

質問 > その他 > メール テンプレートの扱い方

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
sumida
投稿日時: 2013/2/28 22:32
対応状況: −−−
仙人
登録日: 2013/2/10
居住地: 広島県呉市ときどき瀬戸内海
投稿: 641
メール テンプレートの扱い方
メールテンプレートを追加しようと思いました。
が、携帯との絡みで疑問があります。

まず、ディレクトリ構造から、勝手に以下のような解釈をしていました。
「テンプレートのフルセットをdefault以下に配置し、
 携帯専用は、mobile以下に、
 スマートフォン専用は、sphone以下に、」
(携帯は、通信データ量を少なくするために、専用のテンプレートを使う。)
と、思っていました。

しかし、ソースを見ると、注文受付時、携帯であれば、テンプレートID:2、その他は、テンプレートID:1になっていました。 ・・・(1)
このIDによって使い分けると思いきや、ショップ画面のデバイスをもとに参照するディレクトリを直接切換え、テンプレートの使い分けを実現していました。 ・・・(2)

この(1)と(2)が共存している点が、「なぜ?」

また、管理画面:受注管理から送付するメール(注文受付メールを再送も含めて)、
default以下のテンプレートになるようです。
ショップ画面での問い合わせに対する問い合わせ受付メールも、default以下のテンプレートになるようです。

みなさん、どのようにテンプレートを運用(携帯用との使い分けなど)されていますか?
sumida
投稿日時: 2013/3/2 21:36
対応状況: −−−
仙人
登録日: 2013/2/10
居住地: 広島県呉市ときどき瀬戸内海
投稿: 641
Re: メール テンプレートの扱い方
個人的には、
ショップ画面での、自動返信(注文受付メール・問い合わせ受付メール)時は、使用しているデバイスに対応して、
default、mobile、sphoneのメールテンプレートを使い分ける。

また、管理画面では、dtb_orderテーブルに、device_type_idというカラムが存在しているので、
この値によって、default、mobile、sphoneのメールテンプレートを使い分ければ良いと思うのです。

(さらに、mobile、sphoneになければ、defaultのメールテンプレートを使う。)
nanasess
投稿日時: 2013/3/4 10:35
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2302
Re: メール テンプレートの扱い方
引用:

また、管理画面では、dtb_orderテーブルに、device_type_idというカラムが存在しているので、
この値によって、default、mobile、sphoneのメールテンプレートを使い分ければ良いと思うのです。


dtb_order.device_type_id は、 EC-CUBE 2.11.0 から追加された項目になります。
2.11.0 の前バージョンである、2.4 の頃は、テンプレートが、すべて default 以下にあったり、メールテンプレートの判定もベタ書きになっていたりして、中途半端な状態でした。

2.11.0 へのバージョンアップの頃に、しっかり整理できればよかったのですが、スケジュールの都合上、改修の優先度が低くなり、現在のような実装になっています。

また、受注完了メールを決済モジュール側で送信する場合もあり、決済モジュールへ影響のある改修は、メジャーバージョンアップにて行うことになっています。

貴重なご意見ありがとうございます。
次回メジャーバージョンアップ時での課題としてフィードバックしたいと思います。
sumida
投稿日時: 2013/3/6 18:31
対応状況: −−−
仙人
登録日: 2013/2/10
居住地: 広島県呉市ときどき瀬戸内海
投稿: 641
Re: メール テンプレートの扱い方
参考までに、
管理画面:受注管理からメールを送信する場合、
data/class/helper/SC_Helper_Mail.php 内にある関数 sfSendOrderMail から送信するようなので、
試しに、やってみました。

if (SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE) {
$objMailView = new SC_MobileView_Ex();
} else {
$objMailView = new SC_SiteView_Ex();
}

の部分を

if ($arrOrder['device_type_id'] == DEVICE_TYPE_MOBILE) {
$objMailView = new SC_MobileView_Ex();
} else {
$objMailView = new SC_SiteView_Ex();
}

にすると、携帯から注文された場合、注文先へ送信するメールは、mobile/mail_templates内のテンプレートを使用します。

新規注文の場合も関数 sfSendOrderMail から送信します。
この場合も $arrOrder['device_type_id'] に値が入っているようなので、
携帯から注文された場合、mobile/mail_templates内のテンプレートを使用します。
sumida
投稿日時: 2013/5/30 22:36
対応状況: −−−
仙人
登録日: 2013/2/10
居住地: 広島県呉市ときどき瀬戸内海
投稿: 641
Re: メール テンプレートの扱い方
受注情報の device_type_id を使ったメールテンプレートの使い分けをやってみました。

1. 新規作成ディレクトリ
(スマホ用メールテンプレート)
data/Smarty/templates/sphone/mail_templates

2. 修正ファイル
(1) data/class/SC_View.php
(smarty関数の template_exists を追加)
    // デバッグ
    function debug($var = true) {
        $this->_smarty->debugging = $var;
    }
// added
    // テンプレートの存在を確認
    function templateExists($template) {
        return $this->_smarty->template_exists($template);
    }
// added
}


(2) data/class/helper/SC_Helper_Mail.php
(スマホ用メールテンプレートを使用できるようにする。また、モバイル・スマホに該当するテンプレートがない場合、PC用を使用する。)
        $objMailView = null;
// changed
//        if (SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE) {
//            $objMailView = new SC_MobileView_Ex();
//        } else {
//            $objMailView = new SC_SiteView_Ex();
//        }
// changed
        if ($arrOrder['device_type_id'] == DEVICE_TYPE_MOBILE) {
            $objMailView = new SC_MobileView_Ex();
        } elseif ($arrOrder['device_type_id'] == DEVICE_TYPE_SMARTPHONE) {
            $objMailView = new SC_SmartPhoneView_Ex();
        } else {
            $objMailView = new SC_SiteView_Ex();
        }
        // テンプレートがない場合、PC用にする。
        if( !$objMailView->templateExists($this->arrMAILTPLPATH[$template_id]) ){
            $objMailView = new SC_SiteView_Ex();
        }
// changed
        // メール本文の取得
        $objMailView->setPage($this->getPage());
        $objMailView->assignobj($arrTplVar);
        $body = $objMailView->fetch($this->arrMAILTPLPATH[$template_id]);



(3) data/class/pages/shopping/LC_Page_Shopping_Confirm.php
(メールテンプレートID:2の束縛をなくす。)
                // 購入完了ページ
                else {
                    $objPurchase->completeOrder(ORDER_NEW);
// changed
//                    $template_id = SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE ? 2 : 1;
// changed
                    $template_id = 1;
// changed
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,074名です
総投稿数は109,599件です

投稿数ランキング

1
seasoft
7364
2
468
3217
3
AMUAMU
2712
4
nanasess
2302
5
umebius
2085
6
yuh
1812
7
h_tanaka
1605
8
red
1567
9
mcontact
1229
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.