カテゴリー別アーカイブ: EC-CUBE(1系)

会員登録メールと購入内容確認メールに会社名を出そう。

EC-CUBE1系です。
今まで散々、会員情報に「会社名追加」とかやってきたわけですが

「会社名」を管理画面の顧客管理での一覧に表示させる
会員登録に必須の「会社名」を追加する
「顧客管理」時に「会社名」を検索対象にする

メールの方の一番最初の「○○様」ってところにも「会社名」を出したいとな。

会社名

○○様

を目指します。

まずは購入内容確認メールの方

data\lib\slib.php
のL.1770あたり
// 顧客情報の取得の2行下。
$arrRet = $objQuery->select(“point,name01,name02”, “dtb_customer”, “customer_id = ?”, array($customer_id));を

$arrRet = $objQuery->select(“point,name01,name02,company,fax01,fax02,fax03″, “dtb_customer”, “customer_id = ?”, array($customer_id));

と。あ、faxも表示したかったからついでに追加。

L1805あたりの

$name = $objPage->arrOrder[‘order_name01’].” “.$objPage->arrOrder[‘order_name02’];

$name = $objPage->arrCustomer[‘company’].”\n “.$objPage->arrOrder[‘order_name01’].” “.$objPage->arrOrder[‘order_name02’];

です。

次に会員登録メールの方

entry\index.php

のL138($objPage->name02ツꀀ = htmlspecialchars($_POST[‘name02’]);)の下

$objPage->company = htmlspecialchars($_POST[‘company’]);を追加。

data\Smarty\templates\mail_templates\customer_mail.tpl

の会社名を表示したいところに、

<!–{$company}–>

と追加。

これさ、もともと$_POST[]のでーたを生で渡してるけど、大丈夫なのかな?
ちゃんと読み取れてないけど、一応、htmlspecialcharsつけたけど・・・・・・。
まぁ、htmlじゃなくてメールだからいいのか・・・・・・。

最後にいたる前に不正なアクセスといわれる。

あってはいけないミス・・・・・・。

買い物途中、最後の最後で、「不正なアクセスです」と言われるようです。
FireFoxでそんなことになりました。

以下を参考にしています。

買い物処理途中での「不正なアクセスです。」とのエラー

でも、これ、相当・・・・・・あっちゃいけないミスでは。しまったなぁ。

携帯サイトは閉じているはずなのに、携帯メールが届くとは?

EC-CUBEの機能にモバイルショップの同時開店がありますが、今回のお客様には必要ないとのことでしたので、携帯ショップは閉じました。

しかし、携帯用の受注確認メールが届く。のは、何故?

調べてみると、パソコンで閲覧していても、登録されているメールアドレスが携帯メールアドレスの場合は、携帯用のテンプレートが選択されるようです。

うーん。
下記記事(自分ちだけど)を参考に、パソコンのテンプレートと統一するしかなさそうです。

メールテンプレート{order}部分

管理画面の検索部分プルダウンの日付について

商品管理 – 商品マスタの「登録・更新日」
顧客管理 – 顧客マスタの「最終購入日」
受注管理 – 受注管理の「受注日」「変更日」
メルマガ – 配信内容設定「登録日」「最終購入日」

は、
data\conf\conf.php L210のdefine (“RELEASE_YEAR”, 2005);で管理されているので、そこを変更すること。
顧客管理 – 顧客マスタの「最終購入日」
メルマガ – 配信内容設定「登録日」「最終購入日」は、RELEASE_YEARから現在の年+3の選択肢となる。ちょっと不思議な感じですが。

顧客管理 – 顧客マスタの「登録・更新日」は、
admin\customer\index.php の L.91 $objDate = new SC_Date(1901);
で設定してあるが、この1901は、同じところの誕生日部分に関わってくるので、下手に「2008」とかできません。

なので、テンプレートを変更します。

data\Smarty\templates\admin\customer\index.tpl
「登録・更新日」の
<!–{html_options options=$arrYear selected=$arrForm.end_year}–>
となっているところを

<!–{html_options options=$objDate->getYear($smarty.const.RELEASE_YEAR) selected=$arrForm.end_year}–>

と変更します。

「会社名」を管理画面の顧客管理での一覧に表示させる

以前、顧客情報に「会社名」を追加しましたが、その会社名を管理画面>顧客管理で検索したあとのリストに表示させるには・・・・・・。

data\class\SC_CustomerList.php

のL.341あたりにあります

ツꀀ// 検索用SQL
ツꀀfunction getList() {
ツꀀツꀀ$this->select = “SELECT customer_id,name01,name02,kana01,kana02,sex,email,tel01,tel02,tel03,pref,status FROM dtb_customer “;
ツꀀツꀀreturn $this->getSql(0);
ツꀀ}

に、companyを追加します。

function getList() {
ツꀀツꀀ$this->select = “SELECT customer_id,name01,name02,kana01,kana02,sex,email,tel01,tel02,tel03,pref,status,company FROM dtb_customer “;
ツꀀツꀀreturn $this->getSql(0);
ツꀀ}

そして、テンプレートの
data\Smarty\templates\admin\customer\index.tpl

の任意の場所へ

<!–{$search_data[data].company|escape}–>

を入れます。

csvでのダウンロードとアップロード。クォートの不具合。

EC-CUBEはcsvでダウンロードし、csvでアップロードができます。

csvダウンロードしたとき、タグに「”(ダブルクオーツ)」を使っているとその前に「\(←円マーク)」いわゆるエスケープキーがついて来ます。

このデータをcsvアップロードでアップロードすると、エスケープキーで入れたはずの円マークが、テキストとして登録されます。

もしくは、このcsvをエクセルで変更した場合、エスケープキーのはずの円マークがテキストになってしまいます。

その結果、円マークはエスケープではなくて、テキストとして解釈されます。

このデータを再びcsvでダウンロードした場合、円マークはエスケープキーが付きます。
この繰り返しで、どんどんとエスケープキーが付いたりしていきます。

これをなんとかしたい・・・・・・。

admin\products\index_csv.php

のL156あたりに、

$tmp = str_replace(“\””, “\\\“”, $tmp);(\は円マーク)

という記述がありますので、それを以下のように変えます。

switch($key) {
ツꀀツꀀツꀀcase ‘main_comment’:
ツꀀツꀀツꀀcase ‘sub_comment1’:
ツꀀツꀀツꀀcase ‘sub_comment2’:
ツꀀツꀀツꀀcase ‘sub_comment3’:
ツꀀツꀀツꀀcase ‘sub_comment4’:
ツꀀツꀀツꀀcase ‘sub_comment5’:
ツꀀツꀀツꀀcase ‘sub_comment6’:
ツꀀツꀀツꀀツꀀ$tmp = str_replace(“\””, “‘”, $tmp);
ツꀀツꀀツꀀツꀀbreak;
ツꀀツꀀツꀀdefault:
ツꀀツꀀツꀀツꀀ$tmp = str_replace(“\””, “\\\“”, $tmp);
ツꀀツꀀツꀀ}

タグで使った”を’に変えるための変更です。

ちなみに、改行コードを消す(タグのところで改行を使っている場合)のは下記。
この改行コード、CSVだと邪魔なのです。(1行が1レコードというつくりが崩れるから)

ツꀀツꀀ//▼
ツꀀツꀀツꀀツꀀツꀀツꀀツꀀ $line = str_replace(“\n\r”,””, $line);
ツꀀツꀀツꀀツꀀツꀀツꀀツꀀ $line = str_replace(“\r”,””, $line);
ツꀀツꀀツꀀツꀀツꀀツꀀツꀀ $line = str_replace(“\n”,””, $line);
ツꀀツꀀツꀀツꀀツꀀツꀀツꀀ //▲

バックアップ時に真っ白になる

バックアップ時に真っ白になる。

下記アドレス参考

http://warumono.at.webry.info/200703/article_18.html

しかし、直らない。
ラ○○○サイトでは、なぜか、いつもメモリが足りなくなるんだよね。
結構高いサービス使ってるのになぁ。
httpdデーモンがいっぱいで、アパッチの再起動をしなけりゃいけなくなることがあります。
なぜ!!

再起動してみようと思ったけど、たぶん、作業中なのでできない。
また明日の早い時間帯にやってみようと思うけど、何かあったときにラ○○○サイトが対応してくれないんだな。

こまったなー。

【後日談】

ラ○○○サイトのカスタマーサポートからメールでお返事いただきました。
メモリが足りないよちも、memory_limitの関係ではないかと。

php.iniをコントロールパネルで書き換えて、アパッチの再起動をかけたらうまくいくようになりました。
ちなみに、memory_limitの数値は倍にしました。

件名(subject)やFromやToが文字化けする件

「お問い合わせ」「会員登録」「受注メール」の件名やFromやToが文字化けする。
つまりヘッダーに含まれる日本語が文字化けしているのだと思うのだけど、MicrosoftOutlookだと文字化けしないのに、OutlookExpressだと文字化けしてします。

文字コードがUTF8なのを、OutlookExpressが許さないのかなぁとも思いつつ、詳しい理由はつきとめられなかった。

その回避方法

EC-CUBE開発コミュニティサイトより
文字化け

data\class\GC_SendMail.php

L.29

$name = mb_encode_mimeheader($name);

↓↓↓↓↓

$name = mb_encode_mimeheader(mb_convert_encoding($name, “JIS”, CHAR_CODE), “ISO-2022-JP”);

L.65

$this->subjectツꀀツꀀ = mb_encode_mimeheader($subject);

↓↓↓↓↓

$this->subjectツꀀツꀀ = mb_encode_mimeheader(mb_convert_encoding($subject, “JIS”, CHAR_CODE), “ISO-2022-JP”);

L.79

$this->header.= “From: “. mb_encode_mimeheader( $from_name ).”<“.$fromaddress.”>\n”;

↓↓↓↓↓

$this->header .= “From: “. Mb_encode_mimeheader( $from_name, “ISO-2022-JP” ).”<“.$fromaddress.”>\n”;

という感じ。

商品CSVで商品説明文に改行コードが含まれる不具合

EC-CUBEは、商品をcsvで一括変更できるが、このcsvをダウンロードしたとき、商品説明に改行コードが含まれていると1商品1行にならずに不具合が起こる。

タグを使い、改行をせずに文章を入れることが必要だが、一覧リストコメントにいたっては、タグが許可されていなくて、改行コードを<br>に変換する機能がついているのに、なんだか面倒なことだ。

csvデータの途中に改行コードが含まれるなら、途中で削除してしまえばよい。

admin\products\index_csv.php
L137あたりにあるlfMakeProductsCSV関数を変更する。

// 文末の”,”を変換
$line = ereg_replace(“,$”, “\n”, $line);

の上に下記コードを加える。

//▼文の改行コードを全て変更する
$line = str_replace(“\n\r”,””, $line);
$line = str_replace(“\r”,””, $line);
$line = str_replace(“\n”,””, $line);

\は円マークです。

もっとスマートなコードがある気はするが、とりあえず・・・・・・。