EC-CUBE 「メールは携帯電話のものではありません」

EC-CUBE2系で、モバイル端末(フィーチャーフォン)からの会員登録をする際に、 「メールは携帯電話のものではありません」と言われてしまう問題の解決方法。

最近でてきた携帯アドレスの場合、携帯アドレスじゃないと判断されてしまう現象です。

システム設定のマスターデータ管理、mtb_mobile_domain設定でドメインを追加登録すれば解決。

ECCUBE3 ヘッダー部分他をカスタマイズしたい

ECCUBE3のデフォルトテンプレートを改造して行く過程で、

既存デザインのブロック編集とCSSだけでは実現できないので、元のソースを変更したいという場合。

変更するソースは、

/src/Eccube/Resource/template/default/

にあります。

しかし、直接変更すると自動的にアップデートされちゃいますので、

変更したソースを、

/app/template/default/

にコピー設置すると、appの方のソースが優先されるらしいです。

これで自由自在にデザインをカスタマイズできます。

EC-CUBE 納品書カスタマイズ

何度やってもしばらく時間が空くと忘れちゃうよね…

納品書にお届け先の住所を入れたいので、
ご注文者情報を削除してそこに入れました。

data/class/SC_Fpdf
お届け先情報の下辺りに、詳細を取得する行を追加。

$objShip = new SC_Helper_Purchase_Ex();
$this->arrShip = $objShip->getShippings($this->arrDisp[‘order_id’]);

あとは、表示位置の調整をしながら指定するだけ。

参考サイト:http://戯れ問答.net/ec-cube/ec-cube211/555/
“EC-CUBE 納品書カスタマイズ” の続きを読む

EC-CUBE 在庫が少なくなった時のメール送信 2.13

商品在庫が少なくなったらメールでお知らせする機能を
EC-CUBE2.13系に入れました。

追記したファイル:
data/class/helper/SC_Helper_Purchase.php

function registerOrderComplete()に追記。

参考にしたページ

EC-CUBEで在庫数が規定値以下になったらメールする
http://www.space-i.jp/wp/?p=1322

“EC-CUBE 在庫が少なくなった時のメール送信 2.13” の続きを読む

EC-CUBE 送料が反映されない

商品の種類が多い注文の場合、送料等が反映されない不具合がありました。
セッションのデータ型がMySQLのTEXT型の場合、入りきらなくなって消えてしまうということらしいです。
dtb_sessionのsess_dataのデータ型をtextからlongtextに変更して対応。

下記ページを参考にしました。
EC-CUBE:商品を多数購入すると送料が0円になってしまう不具合

“EC-CUBE 送料が反映されない” の続きを読む

ECCUBE 受注メールタイトルに氏名を入れる

2.13はmail_title.tplにタイトルが入っている。
各メールテンプレートと共通で使用しているので、
変数の中身の有無で条件分岐。
改行すると件名に反映するので1ずつ入れる。

<!–{if $arrOrder.order_name01 != ''}–><!–{$arrOrder.order_name01}–> <!–{$arrOrder.order_name02}–> 様【<!–{$tpl_shopname}–>】 <!–{$tpl_mailtitle}–>
<!–{elseif ($arrForm.name01.value !='')}–>
<!–{$arrForm.name01.value}–> <!–{$arrForm.name02.value}–> 様【<!–{$tpl_shopname}–>】 <!–{$tpl_mailtitle}–>
<!–{else}–>
【<!–{$tpl_shopname}–>】 <!–{$tpl_mailtitle}–>
<!–{/if}–>

“ECCUBE 受注メールタイトルに氏名を入れる” の続きを読む

ECCUBE 2.4.1から2.13.1へアップデート

2.4.1を2.13.1へ移行の作業。
数々の壁にぶち当たったので、それぞれヒントになればと思いメモしておく。

デザインを調整。ある程度目処が立ったところで、
データの移行のテスト。
稼働しているサイトだから手順を記録して移行日に最短で最新データに上書きしないといけない。

1.カテゴリはCSVの書き出し&読み込みで。
2.商品データをCSVに書き出して編集してアップしようかなと思ったものの、商品情報の文字列のせいでエクセルでは上手く編集できない。

そこでモジュール使う方がいいのかと、
2.11と2.12をインストールし、モジュールを取得して2.4.1のデータをエクスポートするまでは上手くいくも、2.11にインポートできない。システムエラー。
これを使える様に調整するのは雲をつかむ様な作業。

これで半日を棒に振ってしまった。

調べてると、エラーで出来ないからテーブルコピーで構造をいじってCSVインポートした人もいる。
そっか、結局は力技ですか。
当初はそのつもりだったので、必要なテーブルの構造を確認して進める事にする。
最初からそうしろよってね。

コピーしたのは、
商品、顧客、受注に関するテーブル。
あとは手動で。
※決済種別や発送種別とかは番号を合わせとかないといけない。

【1】必要なテーブルの構造とデータをエクスポート
(コンソールは使えないサーバなのでウェブブラウザからの操作のみとなる)
※postgresからMysqlなのでCREATE文のtimestamp型の場合 without time zoneは削除
あとtimestamp複数の場合、now()を利用するカラム以外にデフォルト値を入れる
例)カラム名 timestamp NOT NULL DEFAULT ‘0000-00-00 00:00:00’,

機種依存文字の問題発生。
phpPgAdminからエクスポート機能を使用するとどうしても文字化けが回避できない。
画面で文字化けしない機種でsql表示させ、コピーしてエクセルとテキストエディタで調整し、インポート用のcsvを作成する。

もしくは、XHTMLで書き出し、それを加工する。

(アクセスがあると早いんだけど…あいにく持っていない。)

一旦、テストテーブルに入れる。

余計なカラムを削除しつつインポート。
(※dtb_orderは不要カラム削除の前に、….)

管理画面でどうやらPOSTの値が文字化け。
phpの問題だな?
php.iniが効いてないっぽい。

すっきり解決。

dtb_orderは不要カラム削除の前に、
dtb_orderからdtb_shippingへ入れる為にテーブルコピーして加工。
CREATE table dtb_shipping AS SELECT * FROM dtb_order;

dtb_order_detailのproduct_class_idにclasscategory_id1でselectし、update。

UPDATE dtb_order_detail,dtb_products_class
set dtb_order_detail.product_class_id= dtb_products_class.product_class_id
where dtb_order_detail.classcategory_id1= dtb_products_class.classcategory_id1 and dtb_order_detail.classcategory_id1>0;

order_detail_idがなくてインポートできない!

エクセルで割り振る。。

完了~。

会員ログインできない。
config.php AUTH_MAGICの値を移行する。
2.4.1は/data/mtb_constants_init.phpにある。
できた。

しまった、管理者ログインのパスワードを再設定するを忘れる←注意

商品種別
product_type_idが0で機能しない
UPDATE dtb_products_class set product_type_id=1;

DNS切り替え後、
自分のルーターを再起動。

商品規格の更新でシステムエラー
dtb_products_classのproduct_class_idの最大値を
dtb_products_class_product_class_id_seqに入れるだけではだめ。
オートインクリメントの値をproduct_class_idの最大値+1に更新しないといけない。

念のため手動でinsertしたテーブルの他のシーケンス値とオートインクリメントの値を確認し、合わせておく。

“ECCUBE 2.4.1から2.13.1へアップデート” の続きを読む

EC-CUBEシステムエラーが発生しました。大変お手数ですが、サイト管理者までご連絡ください。

ある日突然、

EC-CUBEシステムエラーが発生しました。大変お手数ですが、サイト管理者までご連絡ください。

と表示され管理画面にログインできなくなる。

エラーの理由はわからない。
サイトは死んでいないし、DBも生きている。

エラーログを見る事が出来る。
/data/logs/site.log

ログを見てもよくわからない。

同じ様なエラーの人の対処を見ていると、

payment_idの重複によるエラーというのがあったため、

phpPgAdminより確認すると、重複しているものを発見。
重複したpayment_idを変更し、ログインできる様になった。

なぜ、急に重複したのか…

思い当たる節は、前日にお支払い方法の並び順を操作していたという事。
あの機能は不具合があるのかもしれない。
ほかの並べ替えの機能も以前よりすっきり動かないし、
不具合があるに違いない。

そちらの追求はまた別の機会に。

“EC-CUBEシステムエラーが発生しました。大変お手数ですが、サイト管理者までご連絡ください。” の続きを読む

EC-CUBE 商品管理一覧に戻る

管理画面で商品登録や商品編集をした際、
登録完了後、元の検索結果に戻れない。

戻るボタンを追加。

/data/Smarty/templates/default/admin/products/confirm.tpl

の、
「→この商品の規格を登録する」の下辺りに下記コードを追加。

<!–{if count($arrSearchHidden) > 0}–>
<!–▼検索結果へ戻る–>
<a href=”#” onmouseover=”chgImg(‘<!–{$TPL_DIR}–>img/contents/btn_search_back_on.jpg’,’back’);” onmouseout=”chgImg(‘<!–{$TPL_DIR}–>img/contents/btn_search_back.jpg’,’back’);” onClick=”fnChangeAction(‘<!–{$smarty.const.URL_SEARCH_TOP}–>’); fnModeSubmit(‘search’,”,”); return false;”><img src=”<!–{$TPL_DIR}–>img/contents/btn_search_back.jpg” width=”123″ height=”24″ alt=”検索画面に戻る” border=”0″ name=”back”></a>
<!–▲検索結果へ戻る–>
<!–{/if}–>

/data/Smarty/templates/default/admin/products/product.tpl
の戻るボタンがそのまま使えたのでした。
“EC-CUBE 商品管理一覧に戻る” の続きを読む