バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > その他 > 2.12.2で購入時のメール送信先を商品ごとに追加

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
long20th
投稿日時: 2014/8/6 17:02
対応状況: −−−
常連
登録日: 2014/6/25
居住地:
投稿: 35
2.12.2で購入時のメール送信先を商品ごとに追加
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=2151&forum=2
こちらを、2.12.2で実装するにはどのようにしたらよろしいでしょうか?
bucchi
投稿日時: 2014/8/24 0:38
対応状況: −−−
一人前
登録日: 2014/4/28
居住地: 関東
投稿: 72
Re: 2.12.2で購入時のメール送信先を商品ごとに追加
ソース自体は変わっておりませんので、
SC_Helper_Mail.php
のpublic function sfSendOrderMail
にそちらのスレッド同様のコードを追加すれば、動くと思います。

追加するメールアドレスのカラム指定を見なおしてはいかがでしょうか。

よろしくお願いいたします。
long20th
投稿日時: 2014/8/25 10:46
対応状況: −−−
常連
登録日: 2014/6/25
居住地:
投稿: 35
Re: 2.12.2で購入時のメール送信先を商品ごとに追加
>bucchi様
ありがとうございます。

    /* 受注完了メール送信 */
    function sfSendOrderMail($order_id, $template_id, $subject = '', $header = '', $footer = '', $send = true) {

        $arrTplVar = new stdClass();
        $arrInfo = SC_Helper_DB_Ex::sfGetBasisData();
        $arrTplVar->arrInfo = $arrInfo;

        $objQuery =& SC_Query_Ex::getSingletonInstance();
//ここから追加

	$addressList = array();

	foreach ($arrOrderDetail as $orderDetail) {
	    $productId = $orderDetail["product_id"];
	    
	    // 商品データごとのメールアドレス取得
	    $arrProduct = $objQuery->select("comment1", "dtb_products", "product_id = ?", array($productId));
	    $addressList[] = $arrProduct[0]["comment1"];
	}

	// $addressList[]をBccに利用
	$bcc = $arrInfo['email01'] . "," . implode(",", $addressList);

//ここまで


        if ($subject == '' && $header == '' && $footer == '') {
            // メールテンプレート情報の取得
            $where = 'template_id = ?';
            $arrRet = $objQuery->select('subject, header, footer', 'dtb_mailtemplate', $where, array($template_id));
            $arrTplVar->tpl_header = $arrRet[0]['header'];
            $arrTplVar->tpl_footer = $arrRet[0]['footer'];
            $tmp_subject = $arrRet[0]['subject'];
        } else {
            $arrTplVar->tpl_header = $header;
            $arrTplVar->tpl_footer = $footer;
            $tmp_subject = $subject;
        }


としましたが、適用されませんでした。

こちらのコードの記述場所違い、また、SC_Helper_Mail.php以外にも触る必要のあるファイル等あれば、
お教え下さい。

お願い致します。
yuh
投稿日時: 2014/8/25 14:12
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 2.12.2で購入時のメール送信先を商品ごとに追加
$arrOrderDetailが読み込まれてないので、空になります。
$query = '
SELECT * FROM dtb_order_detail WHERE order_id = ?
';
$arrOrderDetail = $objQuery->getAll($query,array($order_id));
等でデータを読みこんだ方がいいと思います。
long20th
投稿日時: 2014/9/1 9:47
対応状況: −−−
常連
登録日: 2014/6/25
居住地:
投稿: 35
Re: 2.12.2で購入時のメール送信先を商品ごとに追加
    /* 受注完了メール送信 */
    function sfSendOrderMail($order_id, $template_id, $subject = '', $header = '', $footer = '', $send = true) {

        $arrTplVar = new stdClass();
        $arrInfo = SC_Helper_DB_Ex::sfGetBasisData();
        $arrTplVar->arrInfo = $arrInfo;

        $objQuery =& SC_Query_Ex::getSingletonInstance();

	$addressList = array();
	$query = '
	SELECT * FROM dtb_order_detail WHERE order_id = ?
	';
	$arrOrderDetail = $objQuery->getAll($query,array($order_id));
		foreach ($arrOrderDetail as $orderDetail) {
		    $productId = $orderDetail["product_id"];
	$arrOrderDetail =
	    $objQuery->select("*", "dtb_order_detail", $where, array($order_id));
	    // 商品データごとのメールアドレス取得
	    $arrProduct = $objQuery->select("comment1", "dtb_products", "product_id = ?", array($productId));
	    $addressList[] = $arrProduct[0]["comment1"];
	}

	// $addressList[]をBccに利用
	$bcc = $arrInfo['email01'] . "," . implode(",", $addressList);


この様にしてみましたが、ダメでした。

すみません。どの様に記述したらよろしいでしょうか?
yuh
投稿日時: 2014/9/1 10:37
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 2.12.2で購入時のメール送信先を商品ごとに追加
メールアドレス取得に関しては

$product_ids = $objQuery->getCol("product_id",'dtb_order_detail',"order_id = ?",array($order_id));
if(is_array($product_ids) AND count($product_ids) > 0){
    $addressList_tmp = $objQuery->getCol('comment1','dtb_products','product_id IN('.implode(",",array_fill(0, count($product_ids), '?')).')',$product_ids);
    $addressList = array_unique($addressList_tmp);
}

これでできると思います。
kuro_r
投稿日時: 2014/9/1 10:45
対応状況: −−−
常連
登録日: 2014/8/7
居住地:
投稿: 32
Re: 2.12.2で購入時のメール送信先を商品ごとに追加
long20th 様

一点質問です。
このfunction内では、$order_idが変わることはないと思いますが、
foreachの中で下記コードを実行する必要がありますでしょうか?

これでは$arrOrderDetailが毎回書き換わると思います。
さらに、$whereには何も設定されていないようなので条件なしでデータが取得されていませんか?


$arrOrderDetail =
	    $objQuery->select("*", "dtb_order_detail", $where, array($order_id));
long20th
投稿日時: 2014/9/1 13:26
対応状況: −−−
常連
登録日: 2014/6/25
居住地:
投稿: 35
Re: 2.12.2で購入時のメール送信先を商品ごとに追加
/* 受注完了メール送信 */
    function sfSendOrderMail($order_id, $template_id, $subject = '', $header = '', $footer = '', $send = true) {

        $arrTplVar = new stdClass();
        $arrInfo = SC_Helper_DB_Ex::sfGetBasisData();
        $arrTplVar->arrInfo = $arrInfo;

        $objQuery =& SC_Query_Ex::getSingletonInstance();
	            $where = 'order_id = ?';

	$addressList = array();
	$product_ids = $objQuery->getCol("product_id",'dtb_order_detail',"order_id = ?",array($order_id));
	if(is_array($product_ids) AND count($product_ids) > 0){
	    $addressList_tmp = $objQuery->getCol('comment1','dtb_products','product_id IN('.implode(",",array_fill(0, count($product_ids), '?')).')',$product_ids);
	    $addressList = array_unique($addressList_tmp);
}		foreach ($arrOrderDetail as $orderDetail) {
		    $productId = $orderDetail["product_id"];
	    // 商品データごとのメールアドレス取得
	    $arrProduct = $objQuery->select("comment1", "dtb_products", "product_id = ?", array($productId));
	    $addressList[] = $arrProduct[0]["comment1"];
	}
		// $addressList[]をBccに利用
			$bcc = $arrInfo['email01'] . "," . implode(",", $addressList);

	// $addressList[]をBccに利用
	$bcc = $arrInfo['email01'] . "," . implode(",", $addressList);

このような形で組んで見ましたが、
出来ませんでした。

間違い点をご指摘下さいませんか?

宜しくお願い致します。
long20th
投稿日時: 2014/9/1 13:42
対応状況: −−−
常連
登録日: 2014/6/25
居住地:
投稿: 35
Re: 2.12.2で購入時のメール送信先を商品ごとに追加
/* 受注完了メール送信 */
    function sfSendOrderMail($order_id, $template_id, $subject = '', $header = '', $footer = '', $send = true) {

        $arrTplVar = new stdClass();
        $arrInfo = SC_Helper_DB_Ex::sfGetBasisData();
        $arrTplVar->arrInfo = $arrInfo;

        $objQuery =& SC_Query_Ex::getSingletonInstance();
	$arrOrderDetail =
	    $objQuery->select("*", "dtb_order_detail", $where, array($order_id));
	$addressList = array();
	$product_ids = $objQuery->getCol("product_id",'dtb_order_detail',"order_id = ?",array($order_id));
	if(is_array($product_ids) AND count($product_ids) > 0){
	    $addressList_tmp = $objQuery->getCol('comment1','dtb_products','product_id IN('.implode(",",array_fill(0, count($product_ids), '?')).')',$product_ids);
	    $addressList = array_unique($addressList_tmp);
}		foreach ($arrOrderDetail as $orderDetail) {
		    $productId = $orderDetail["product_id"];
	    // 商品データごとのメールアドレス取得
	    $arrProduct = $objQuery->select("comment1", "dtb_products", "product_id = ?", array($productId));
	    $addressList[] = $arrProduct[0]["comment1"];
	}
		// $addressList[]をBccに利用
			$bcc = $arrInfo['email01'] . "," . implode(",", $addressList);


この様に組んで見ましたが、
エラーは出ませんが、メールはcomment1に飛びません。

どの様にしたらよろしいでしょうか?
yuh
投稿日時: 2014/9/1 13:44
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 2.12.2で購入時のメール送信先を商品ごとに追加

	foreach ($arrOrderDetail as $orderDetail) {
	    $productId = $orderDetail["product_id"];
	    // 商品データごとのメールアドレス取得
	    $arrProduct = $objQuery->select("comment1", "dtb_products", "product_id = ?", array($productId));
	    $addressList[] = $arrProduct[0]["comment1"];
	}

この部分が必要ないです。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1291
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
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.