バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
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
居住地: 宝塚
投稿: 1889
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 へのバージョンアップの頃に、しっかり整理できればよかったのですが、スケジュールの都合上、改修の優先度が低くなり、現在のような実装になっています。

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

貴重なご意見ありがとうございます。
次回メジャーバージョンアップ時での課題としてフィードバックしたいと思います。


----------------
大河内健太郎(Kentaro Ohkouchi)
EC-CUBE公式エバンジェリスト
有限会社 Loop AZ

EC-CUBE1系2系長期サポートホスティングサービス CUBE Lab
https://cubelab.info/

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.co

統計情報

総メンバー数は44,715名です
総投稿数は91,569件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
nanasess
1889
4
468
1740
5
yuh
1584
6
umebius
1296
7
red
1275
8
fukap
907
9
tsuji
837
10
shutta
827
11 ramrun 789
12
tao_s
740
13
h_tanaka
719
14 karin 656
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
483
20 tonton 436


ネットショップの壺

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

Copyright© LOCKON CO.,LTD. All Rights Reserved.