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-CUBE2.13系に入れました。

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

function registerOrderComplete()に追記。

参考にしたページ

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

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


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

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}-->

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したテーブルの他のシーケンス値とオートインクリメントの値を確認し、合わせておく。

ある日突然、

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

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

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


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


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

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

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

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

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

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

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

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

戻るボタンを追加。

/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
の戻るボタンがそのまま使えたのでした。

基本情報管理からマスタデータ管理を選ぶ。

mtb_mail_template
mtb_mail_tpl_path

を編集。


の前に、
新しいテンプレートを以下に保存。
/data/Smarty/templates/mail_templates/

/data/class/pages/shopping/LC_Page_Shopping_Complete.php

に、在庫数が少ない場合の分岐とメール送信の記述を追加した。
残り何個で送信するかは、この部分の数値を変更する。
忘れない様メモ。

CPIサーバへEC-CUBEインストールで詰まった。

必要なファイルをサーバーに転送後、
php.iniの設定をし、インストールを開始。

アクセス権限のチェックはOK。

必要なファイルのコピーを開始します。
の次に、下記エラーがでる。
Call to undefined function mb_ereg()

でも、ちゃんとmbstringは組み込まれているし...


いろいろ調べていると、どうやらディレクトリの位置の問題らしい。
一つ階層を下げていたのをやめてwebルートに直接入れる事で解決。

ウェブページ

Powered by Movable Type 4.13

このアーカイブについて

このページには、過去に書かれたブログ記事のうちEC-CUBEカテゴリに属しているものが含まれています。

前のカテゴリはCGIです。

次のカテゴリはMTです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。