バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > その他 > 購入時のメール送信先

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ゲスト
投稿日時: 2008/5/11 19:24
対応状況: −−−
Re: 購入時のメール送信先
引用:

saratogaさんは書きました:
下記の 2 行で $arrInfo を生成しています。

$objSiteInfo = new SC_SiteInfo();
$arrInfo = $objSiteInfo->data;

data/class/SC_SiteInfo.php のコンストラクタで、data/class/helper/SC_Helper_DB.php の sf_getBasisData() を呼んでいると思います。

そこで、dtb_baseinfo から情報取得していませんか?

SC_Helper_DB.phpのなかでdtb_baseinfoの関連が分りませんでした><
SC_SiteInfo.phpの方にdtb_baseinfoの情報があったので下記のように追記して見ました。
function SC_SiteInfo($conn = ''){
/*
$DB_class_name = "SC_DbConn";
if ( is_object($conn)){
if ( is_a($conn, $DB_class_name)){
// $connが$DB_class_nameのインスタンスである
$this->conn = $conn;
}
} else {
if (class_exists($DB_class_name)){
//$DB_class_nameのインスタンスを作成する
$this->conn = new SC_DbConn();
}
}

if ( is_object($this->conn)){
$conn = $this->conn;
$sql = "SELECT * FROM dtb_baseinfo,dtb_products";
$data = $conn->getAll($sql);
$this->data = $data[0];
}
*/
$objDb = new SC_Helper_DB_Ex();
$this->data = $objDb->sf_getBasisData();
}
しかし、未だcomment4はメールとして認識されず…です><

この辺の内容は何を勉強したら良いのでしょうか?
saratogaさん、色々ご教授頂きありがとうございます。

この記述がそもそも間違ってますか?
saratoga
投稿日時: 2008/5/11 23:08
対応状況: −−−
一人前
登録日: 2006/9/22
居住地: 大阪
投稿: 76
Re: 購入時のメール送信先
dtb_baseinfo については、$arrInfo["comment4"] を使おうとされていたので触れましたが、話が脱線してしまったようですので忘れて下さい。

商品個別にメールアドレスを持ち、その商品が購入された場合にメールを送るのであれば、SC_Helper_Mail.php の sfSendOrderMail() 内で、下記のプログラムがあるので、その注文データの詳細情報を利用するといいかと思います。

$arrOrderDetail =
    $objQuery->select("*", "dtb_order_detail", $where, array($order_id));


$arrOrderDetail には注文した商品の情報(購入した商品分)が入っていて、それぞれに product_id を持っています。よって、それぞれの product_id から商品データを検索して comment4 のカラムを取得してきてはいかがでしょうか。

1 つの注文に対して、購入商品は複数個ある場合があるので、その辺は仕様に応じて工夫が必要になってくるとは思います。
(Bcc に追加するメールアドレスも複数になってくると思うので)
ゲスト
投稿日時: 2008/5/11 23:36
対応状況: −−−
Re: 購入時のメール送信先
引用:

saratogaさんは書きました:
dtb_baseinfo については、$arrInfo["comment4"] を使おうとされていたので触れましたが、話が脱線してしまったようですので忘れて下さい。


了解です!お手数おかけします><

引用:

商品個別にメールアドレスを持ち、その商品が購入された場合にメールを送るのであれば、SC_Helper_Mail.php の sfSendOrderMail() 内で、下記のプログラムがあるので、その注文データの詳細情報を利用するといいかと思います。

$arrOrderDetail =
    $objQuery->select("*", "dtb_order_detail", $where, array($order_id));


$arrOrderDetail には注文した商品の情報(購入した商品分)が入っていて、それぞれに product_id を持っています。よって、それぞれの product_id から商品データを検索して comment4 のカラムを取得してきてはいかがでしょうか。

1 つの注文に対して、購入商品は複数個ある場合があるので、その辺は仕様に応じて工夫が必要になってくるとは思います。
(Bcc に追加するメールアドレスも複数になってくると思うので)


この部分を利用するとなると、どのように取得するのでしょうか?

        $arrOrderDetail = $objQuery->select("*", "dtb_order_detail", $where, array($order_id));
        $arrOrderMail = $objQuery->select("dtb_products");


$bcc = $arrInfo['email01'] . "," . $arrOrderMail['comment20'];

これでは「システムエラーが出ました」となってしまいました><
DB上でdtb_order_detailを見て見ましたが、う〜む。。。

この部分からcomment4の情報を取得するには別のファイルで定義付ける必要がありますか?
saratoga
投稿日時: 2008/5/12 0:21
対応状況: −−−
一人前
登録日: 2006/9/22
居住地: 大阪
投稿: 76
Re: 購入時のメール送信先
3 番目の投稿者であるゲスト様も言われていた通り、ここからは php のプログラムの問題になると思われます。

$arrOrderDetail の連想配列の中身がどのような構造になっているか。この連想配列から product_id を抜き出すにはどうしたらいいのか。などを自分で考えれるようにしてから、仕様に合わせてカスタマイズしていった方が無難だと思います。

EC-CUBE のバグであれば、しっかりと設計して作成したサンプルコードを出して共有すべきなのですが、今回はオリジナルの仕様のお話なので 1 つの方向性までとさせて頂ければと思います。

かなり強引な例ですが、簡単なサンプルだけ書いておきます。
動作確認してないですし、プログラムもあまり良くない例です。

$addressList = array();

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

// $addressList[]をBccに利用
$bcc = $arrInfo['email01'] . "," . implode(",", $addressList);
ゲスト
投稿日時: 2008/5/12 10:44
対応状況: −−−
Re: 購入時のメール送信先
ありがとうございます!
動作しました!
感動です!

saratoga様、長々お付き合いいただきましてありがとうございます!

>かなり強引な例ですが、簡単なサンプルだけ書いておきます。
>動作確認してないですし、プログラムもあまり良くない例です。
と、ありましたがとても助かりました!

やっぱり奥が深いですね…

今度は僕が誰かに技術提供できるよう、勉強します!

ほんとにありがとうございました!
lucky7
投稿日時: 2008/7/7 0:28
対応状況: −−−
一人前
登録日: 2008/6/2
居住地: 東京近郊
投稿: 101
Re: 購入時のメール送信先
現在、この仕組みを導入しようと思っているのですが、
購入時に配信されるメールの内容をそれぞれ変更出来ますでしょうか?

例えば、
購入者⇒テンプレート1
業者A⇒テンプレート2
業者B⇒テンプレート2

という具合に。

と、いいますのも、現状の一括購入の場合
業者A、業者Bに購入者が何を購入したのかが分ってしまうので
業者には自分の所の商品が売れた事と、購入者の情報だけ
通知したいと思っているのですが可能でしょうか?
メールのテンプレートから購入業者の情報を削除すれば可能なのですが、購入者にはそれぞれ何を買ったかを知らせたいので、業者A・業者Bの情報を載せたいと思っています。

そもそもの仕組みをいじらなければ行けない気がしますが…

どなたかご教授ください><


----------------
EC-CUBEバージョン 2.1.2
PHPバージョン PHP 4.3.9
DBバージョン MySQL 4.1.20

lucky7
投稿日時: 2008/7/7 12:29
対応状況: −−−
一人前
登録日: 2008/6/2
居住地: 東京近郊
投稿: 101
Re: 購入時のメール送信先
追伸
一括購入、つまりカートをなくして
商品詳細→購入フォームと言う流れでもOKなのですが
カスタムする際、どちらが簡単でしょうか?


----------------
EC-CUBEバージョン 2.1.2
PHPバージョン PHP 4.3.9
DBバージョン MySQL 4.1.20

long20th
投稿日時: 2014/8/5 17:25
対応状況: −−−
常連
登録日: 2014/6/25
居住地:
投稿: 35
Re: 購入時のメール送信先
バージョン2.12.2で実装するにはどのようにしたらよろしいでしょうか?
同じ様に実装しましたが出来ませんでした。

お教え下さい。

バージョン 2.12.2
サーバー KAGOYA
« 1 (2)
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は94,611名です
総投稿数は111,319件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2324
5
umebius
2085
6
yuh
1880
7
h_tanaka
1790
8
red
1574
9
mcontact
1501
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
804
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.