購入時の自動メール「order.php」内の「order totals area」の編集

困った時はこちらで質問してください。回答を担当する人は特に決まっていませんので、分かる方は回答をお願いします。
アバター
kami
記事: 22
登録日時: 2010/11/23 13:40

購入時の自動メール「order.php」内の「order totals area」の編集

投稿記事by kami » 2011/3/24 18:52

こんにちは!
いつもお世話になっております。

日々zen cartの編集に明け暮れております。
いつも質問ばかりで大変恐縮なのですが、何かしらのアドバイスを頂けると幸いです。

商品購入時に送られてくる自動メールの編集に関してなのですが、
「注文確認メールの変更」
viewtopic.php?f=5&t=1316&start=0&st=0&sk=t&sd=a
「ご注文ありがとうございますメールzen-cart-v1.3.0.2-l10n-jp-2でのカスタマイズ」
viewtopic.php?f=3&t=3623&start=0&st=0&sk=t&sd=a&hilit=%E6%B3%A8%E6%96%87+%E3%83%A1%E3%83%BC%E3%83%AB
などを参考に、かなり希望に近い形にまで修正することができました。

しかし、どうしても壁をクリアすることができません。
壁というのは、デフォルトのファイルである includes/classes/order.php の中の

//order totals area
$html_ot .= '<td class="order-totals-text" align="right" width="100%">' . '&nbsp;' . '</td><td class="order-totals-num" align="right" nowrap="nowrap">' . '---------' .'</td></tr><tr>';
for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
$email_order .= strip_tags($order_totals[$i]['title']) . ' ' . strip_tags($order_totals[$i]['text']) . "\n";
$html_ot .= '<td class="order-totals-text" align="right" width="100%">' . $order_totals[$i]['title'] . '</td><td class="order-totals-num" align="right" nowrap="nowrap">' .($order_totals[$i]['text']) .'</td></tr><tr>';
}
$html_msg['ORDER_TOTALS'] = '<table border="0" width="100%" cellspacing="0" cellpadding="2">' . $html_ot . '</table>';

という部分ですが、この「小計」や「配送方法などの表現」を変更したく、以下のようにしました。

//order totals area
$html_ot .= '<td class="order-totals-text" align="right" width="100%">' . '&nbsp;' . '</td><td class="order-totals-num" align="right" nowrap="nowrap">' . '---------' .'</td></tr><tr>';
$email_order .= EMAIL_TEXT_PRODUCTPRICE . $this->info['subtotal'] . EMAIL_TEXT_MUNIT . "\n" .
EMAIL_TEXT_SHIPPINGCOSTTITLE . $this->info['shipping_cost'] . EMAIL_TEXT_MUNIT . "\n" .
EMAIL_TEXT_TOTAL . $this->info['total'] . EMAIL_TEXT_MUNIT . "\n";
$html_ot .= '<td class="order-totals-text" align="right" width="100%">' . $order_totals[$i]['title'] . '</td><td class="order-totals-num" align="right" nowrap="nowrap">' .($order_totals[$i]['text']) .'</td></tr><tr>';
$html_msg['ORDER_TOTALS'] = '<table border="0" width="100%" cellspacing="0" cellpadding="2">' . $html_ot . '</table>';

この結果、希望の表現にすることはできたのですが、支払い方法で「代金引換」を選択すると「代金引換手数料」が表示されません。
自分で編集しておきながら当然のことと理解しているうえ、さらに if文 などを指定してあげれば解決するだろうという予測はつくのですが、何を試してもうまくいきません。

成功した経験のある方、また何かしらのヒントをご存知の方
アドバイスのほどお願い致します。


バージョン:1.3.0.2-l10n-jp-6
アバター
ゲスト

Re: 購入時の自動メール「order.php」内の「order totals area」の編集

投稿記事by ゲスト » 2011/3/24 20:33

今一つよくわからないのですが、
「小計」の文字を変更するなら、
includes/languages/japanese/modules/order_total/ot_subtotal.php
ですが。

それと、
$html_ot .= '<td class="order-totals-text" align="right" width="100%">' . $order_totals[$i]['title'] . '</td><td class="order-totals-num" align="right" nowrap="nowrap">' .($order_totals[$i]['text']) .'</td></tr><tr>';
の部分で、for文がなくなっているので、$iの解決ができません。
アバター
kami
記事: 22
登録日時: 2010/11/23 13:40

Re: 購入時の自動メール「order.php」内の「order totals area」の編集

投稿記事by kami » 2011/3/24 21:29

ゲストさん、さっそくの回答ありがとうございます。

「小計」の文字を変更するなら、
includes/languages/japanese/modules/order_total/ot_subtotal.php
ですが。


そんなところに潜んでいたのですね ・・・
まったく探すことができませんでした。
ありがとうございます。

$html_ot .= '<td class="order-totals-text" align="right" width="100%">' . $order_totals[$i]['title'] . '</td><td class="order-totals-num" align="right" nowrap="nowrap">' .($order_totals[$i]['text']) .'</td></tr><tr>';
の部分で、for文がなくなっているので、$iの解決ができません。


for文というのはデフォルトの
for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
のことを指すのだと思いますが、この一文のままだと自分の設定では
商品価格:1860円
送料:630円
合計:2490円
商品価格:1860円
送料:630円
合計:2490円
商品価格:1860円
送料:630円
合計:2490円
というように、なぜか3回繰り返してしまいました。
とりあえず削除すると上記の現象は改善されたのでいいものかと ・・・
やはり奥が深いですね。

しかし、おかげ様で冒頭のご説明で「小計」を修正する箇所はわかりました。
もう1箇所アドバイスを頂けると for文からの部分を修正する必要がないのでお知恵を拝借願います。

デフォルトでは
小計:
「選択した配送方法」(私の場合は佐川急便)
合計:
と表示されるかと思います。

この「選択した配送方法」の場所には
includes\languages\japanese\modules\shipping (私の場合はsagawaex.php)
MODULE_SHIPPING_○○○_TEXT_TITLE
で指定した文字が表示されることはわかったのですが、ここを私の希望である「送料」としてしまうと、実際の購入までの流れも「送料」と表示されてしまい、思うようにいきません。

メール文の「配送方法」のみを個別に指定することはできるものでしょうか?

(乱文のため非常にわかりづらい文章になっているかと思いますが、ご勘弁ください)
アバター
k
記事: 28
登録日時: 2006/2/25 20:17

Re: 購入時の自動メール「order.php」内の「order totals area」の編集

投稿記事by k » 2011/3/25 00:38

MODULE_SHIPPING_○○○_TEXT_TITLEはそのままにしておいて、
define('MODULE_SHIPPING_○○○_TEXT_TITLE_MAIL', '送料');
などのように新たに項目を作り、メールの文言を呼び出す部分を、「MODULE_SHIPPING_○○○_TEXT_TITLE_MAIL」に変えてみてはいかがでしょうか。
通常時に、どのようにして、MODULE_SHIPPING_○○○_TEXT_TITLEを呼び出していたのかはちょっと記憶が定かではありませんが…。

もしくは、MODULE_SHIPPING_○○○_TEXT_TITLEを「送料」としてしまい、購入までの流れで出てくる文言の部分を、新たに項目を作って置き換えるとか(上記の逆パターン)。
文言を呼び出している部分は、Devasなどのソフトで検索してみて下さい。

現在出先で、ソースを見ておりませんので、あまり自信はありません…。
アバター
kami
記事: 22
登録日時: 2010/11/23 13:40

Re: 購入時の自動メール「order.php」内の「order totals area」の編集

投稿記事by kami » 2011/3/25 21:55

k さん
ご回答ありがとうございます。

方法1の
MODULE_SHIPPING_○○○_TEXT_TITLEはそのままにしておいて、
define('MODULE_SHIPPING_○○○_TEXT_TITLE_MAIL', '送料');
などのように新たに項目を作り、メールの文言を呼び出す部分を、「MODULE_SHIPPING_○○○_TEXT_TITLE_MAIL」に変えてみてはいかがでしょうか。

までは問題なくできるのですが、
通常時に、どのようにして、MODULE_SHIPPING_○○○_TEXT_TITLEを呼び出していたのかはちょっと記憶が定かではありませんが…。

やはりここが難関です。
下記の箇所を修正しなければいけないということなのでしょうか…

//order totals area
$html_ot .= '<td class="order-totals-text" align="right" width="100%">' . '&nbsp;' . '</td><td class="order-totals-num" align="right" nowrap="nowrap">' . '---------' .'</td></tr><tr>';
for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
$email_order .= strip_tags($order_totals[$i]['title']) . ' ' . strip_tags($order_totals[$i]['text']) . "\n";
$html_ot .= '<td class="order-totals-text" align="right" width="100%">' . $order_totals[$i]['title'] . '</td><td class="order-totals-num" align="right" nowrap="nowrap">' .($order_totals[$i]['text']) .'</td></tr><tr>';
}
$html_msg['ORDER_TOTALS'] = '<table border="0" width="100%" cellspacing="0" cellpadding="2">' . $html_ot . '</table>';


方法2の
もしくは、MODULE_SHIPPING_○○○_TEXT_TITLEを「送料」としてしまい、購入までの流れで出てくる文言の部分を、新たに項目を作って置き換えるとか(上記の逆パターン)。
文言を呼び出している部分は、Devasなどのソフトで検索してみて下さい。

これは「来たー」と思い、小躍りしたい気持ちだったのですが、
私が使用している佐川急便のlanguagesファイル、
includes/languages/japanese/modules/shipping/sagawaex.php
内の
MODULE_SHIPPING_SAGAWAEX_TEXT_TITLE  (←これがデフォルトかと思うのですが…)
を検索してみたところ、
includes/modules/shipping/sagawaex.php
内に1箇所あるのみでした。

どこを置き換えていいものか…

やはり詰まるところ
//order totals area
$html_ot .= '<td class="order-totals-text" align="right" width="100%">' . '&nbsp;' . '</td><td class="order-totals-num" align="right" nowrap="nowrap">' . '---------' .'</td></tr><tr>';
for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
$email_order .= strip_tags($order_totals[$i]['title']) . ' ' . strip_tags($order_totals[$i]['text']) . "\n";
$html_ot .= '<td class="order-totals-text" align="right" width="100%">' . $order_totals[$i]['title'] . '</td><td class="order-totals-num" align="right" nowrap="nowrap">' .($order_totals[$i]['text']) .'</td></tr><tr>';
}
$html_msg['ORDER_TOTALS'] = '<table border="0" width="100%" cellspacing="0" cellpadding="2">' . $html_ot . '</table>';

を何かしら修正する以外に方法はないということなのでしょうか。

ヒントまたはアドバイスをお持ちの方、ぜひお知恵をお願いします。
アバター
BANKS
記事: 12
登録日時: 2008/11/28 11:11

Re: 購入時の自動メール「order.php」内の「order totals area」の編集

投稿記事by BANKS » 2011/3/28 19:26

横レス失礼します

ご質問の内容が、正確に分かっていないのですが
佐川急便で、代引き+代引き手数料を付けたいという事でしょうか?

参考にするのでしたら、クロネコヤマト代引きを参考に
文字
includes/languages/japanese/modules/payment/ot_cod.php
includes/languages/japanese/modules/order_total/ot_cod_fee.php
モジュール
/includes/modules/payment/cod.php
/includes/modules/order_total/ot_cod_fee.php

を元に、ot_sagawaex.phpやot_sagawaexfee.php等を
作れば如何でしょう?

応用すれば、他の支払い方法も設定できます
BANKS Amplifiers
http://BANKS-amp.com
アバター
kami
記事: 22
登録日時: 2010/11/23 13:40

Re: 購入時の自動メール「order.php」内の「order totals area」の編集

投稿記事by kami » 2011/4/01 22:39

BANKS さん回答ありがとうございます。

佐川急便で、代引き+代引き手数料を付けたいという事でしょうか?

せっかくご回答頂きましたが、質問とはちょっと違った内容です。

簡単に説明しますと、
・注文メールに表示される「配送方法」の部分を変更したい。
・(佐川急便の場合)MODULE_SHIPPING_SAGAWAEX_TEXT_TITLE を変更すると他の場所も変わってしまう。(注文確定のSTEPでたびたび表示)

どこかにひと手間加えれば解決できるものと思っていたのですが、どうやら簡単ではないようですね。

やはり自分でPHPを勉強してみるしかなさそうですね …
ご質問に回答頂きました、ゲストさん、Kさん、BANKSさん
本当にありがとうございました。
アバター
BANKS
記事: 12
登録日時: 2008/11/28 11:11

Re: 購入時の自動メール「order.php」内の「order totals area」の編集

投稿記事by BANKS » 2011/4/02 00:20

ごめんなさい。全く勘違いをしていました

メールの配送方法の文字を変更するだけですね

でしたら
/includes/languages/japanese/checkout_process.php
のdefine('EMAIL_TEXT_SHIPPING', '配送方法: ');
って事でしょうか?
BANKS Amplifiers
http://BANKS-amp.com
アバター
kami
記事: 22
登録日時: 2010/11/23 13:40

Re: 購入時の自動メール「order.php」内の「order totals area」の編集

投稿記事by kami » 2011/4/02 11:33

BANKS さん

ふたたびありがとうございます。
デフォルトのメールでは

商品
------------------------------------------------------
○○○ = △△円
------------------------------------------------------
小計: ○円
佐川急便 (通常便): △円
合計: ■円

という感じで表示される箇所があると思うのですが、
この「佐川急便 (通常便)」という箇所を修正したい状況です。

該当箇所は
includes/languages/japanese/modules/shipping/sagawaex.php
内の MODULE_SHIPPING_SAGAWAEX_TEXT_TITLE
ということはわかっているのですが、ここを変更するとWEB上も一緒に変わってしまうので、それは避けたいなと。

PHPを理解していれば
includes/classes/order.php 内の
//order totals area  以下を修正することで可能になるのでしょうが、それも私の知識ではうまくいかず ・・・

悶々としております。
引き続き何かアドバイスがありましたらお願いします。
アバター
ゲスト

Re: 購入時の自動メール「order.php」内の「order totals area」の編集

投稿記事by ゲスト » 2011/4/03 18:09

試していません。たぶんですが。

includes/classes/order.php内

コード: 全て選択

    for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
      $email_order .= strip_tags($order_totals[$i]['title']) . ' ' . strip_tags($order_totals[$i]['text']) . "?\n";
      $html_ot .= '<td class="order-totals-text" align="right" width="100%">' . $order_totals[$i]['title'] . '</td><td class="order-totals-num" align="right" nowrap="nowrap">' .($order_totals[$i]['text']) .'</td></tr><tr>';
    }


で、$order_totals[$i]['title']が「佐川急便 (通常便):」のときに、他のテキストに置き換えればいいのかな?

orders_totalテーブルのtitleに「佐川急便 (通常便):」、textに「△円」と入っているので。
アバター
kami
記事: 22
登録日時: 2010/11/23 13:40

Re: 購入時の自動メール「order.php」内の「order totals area」の編集

投稿記事by kami » 2011/4/03 20:29

ゲストさん

ご回答ありがとうございます。
やはり
//order totals area 以下の


$email_order .= strip_tags($order_totals[$i]['title']) . ' ' . strip_tags($order_totals[$i]['text']) . "\n";

を修正しないといけないということですね。
PHPを勉強しながら、徐々に希望に近づけていきたいと思います。

同様の悩みを持った人は少ないように感じますので、自分で切り開いていきたいと思います。
自己解決できたら際には方法を載せたいと思います。

ご回答頂いた皆さん、お手を煩わせてすいません。
そして本当にありがとうございました。

“Zen Cart 質問コーナー” へ戻る