カテゴリー: CMS・ブログツール

【EC-CUBE】商品詳細ページにカスタム入力欄を追加する(プレ)

表題の件。要するにぼやきのためのエントリー;

長らく悩まされていた詳細ページのフォームへカスタム入力欄(オーダーサイズを入力させたい!)追加ができるようになる。

もう、何が大変って、ちょいちょいっとで起きると思って始めたら、全然;
セッションの引き回しやら管理画面やら、メールやら、ややこしいったらありゃしない。。。

結局、とにかく自力で!PHPの入門マニュアルやら引き出してきて、変数と処理を追っかけまくる羽目になった。

いじるファイルも多いし、作業も面倒。

忘れないうちに、メモっておこうと思うけど、すでにこの時点で忘れかけ・・・(だって、かなりのトライアル&エラーだったんだもぉ~ん。)

マジでハゲるかと思いましたよ。(^^;

とりあえずあとで書くことにして、触ったファイルだけでもメモしておきたい。(メモなので間違ってるかも。まあ、いいや後で修正すれば。)

  • detail.tpl
  • cart/index.tpl
  • LC_Page_Products_Detail.php
  • SC_CartSession.php
  • SC_Helper_DB.php
  • LC_Page_Shopping_Complete.php
  • LC_Page_Mypage_History.php
  • LC_Page_Admin_Order_Edit.php
  • mypage/history.tpl
  • shopping/confirm.tpl
  • mail_teplate/order_mail.tpl
  • admin/order/edit.tpl
  • admin/order/disp.tpl
  • ctb_order_detail(データベースにカラム追加)

大体これくらい?携帯サイトのほうはまだできていませ~ん。

追記。で、情報も書いてみた。

そして、一般公開にしようかどうかを悩む。。。
ややこしい内容なので、クレーム来てもヤだし。。。

てことで、当面は、個別に知りたい人にだけこっそり教えることにする・・・

【EC-CUBE】初回の買い物は、ポイント●倍にする

EC-CUBEを再びカスタマイズ。
初回の買い物は、ポイント●倍にして、その倍率は、管理画面のパラメータ設定で変えられるようにする。

その1)初回の買い物かどうか、判定してポイントを●倍にするロジックを追加。

/data/class/SC_CartSession.phpの function getAllProductsPoint() に下記コードを追加。
L206あたり。

$id = $_SESSION[$this->key][$i][‘id’][0];
$point = SC_Utils_Ex::sfPrePoint($price, $point_rate, POINT_RULE, $id);
$total+= ($point * $quantity);
}
$objQuery = new SC_Query();
$objCustomer = new SC_Customer();
//customer_idを検証
$customer_id = $objCustomer->getValue(“customer_id”);
$order_count = $objQuery->count(“dtb_order”, “customer_id= ? and del_flg = 0”, array($customer_id));
if ($order_count == 0) {
$total = $total*FIRST_POINT;
}
return $total;
}

// カートへの商品追加

その2)管理画面のパラメータ設定にポイント倍率設定用の項目を増やす。

DBの、mtb_constantsを開いて、カラムを1行追加。

id FIRST_POINT
name 1
rank 523※一番最後に追加
remarks 初回購入ポイント倍率

nameの値が倍率になる。デフォルトは”1″(倍)。

倍率を変更するときは、管理画面のパラメータ設定で値を変えればOK。

その他の注意点としては、キャンセルがあったときなどにポイントの手動付け替えなど、色々懸念することが出てきてしまうので、

  • ポイント付与のタイミングを発送済みか支払い確認済みなどのステータスになったとき、などに変更しておいたほうがいい
  • 注文のキャンセルがあったときは、自動でポイントが付け替えられるほうがいい

こういうことも一緒にカスタマイズしておいたほうがいい。この辺は、次のバージョンあたりで解消されそうな気もするけども。

WORDPRESSへフォームをつけた。そして携帯対応にした。

WORDPRESSには、色んなプラグインがある。

その中に、お問い合わせフォームを簡単に作ろう♪というプラグインがあるのであるが、

この2つで迷い、悩みぬいた挙句(というか、やりたいことを実現するために朝方までソースをいじいじテストした挙句)今回は、contact form 7を利用することにした。

というのも、問題は、KTAI STYLEとの相性というか、、、携帯での文字化け?

フォームのメール入力欄に携帯電話のメールアドレスを使用すると、送られてくる内容確認メールが文字化けするのだ。色んなハックを調べてやってみたんだけど、PCサイトでは、文字化けなく携帯にメールが送られるようになったものの、どうしても、KTAI STYLEの携帯サイトからは、文字化けが直らない・・・

エンコードの問題があるので対応を迫られるのはしょうがない;
とはいえ、これはキビシイ。

cformでは、全体の文字化けは、回避できたけど、formの値の部分のみ文字化けする。(後ちょっとな気がするんだけど;)

てことで、なんとかうまくいったcontact form 7のハック。

wp-contact-form-7.phpのL991あたり。function validateにktai style用のコードを追加。

function validate($contact_form) {
$fes = $this->form_elements($contact_form[‘form’], false);
$valid = true;
$reason = array();

foreach ($fes as $fe) {
$type = $fe[‘type’];
$name = $fe[‘name’];
$values = $fe[‘values’];
$raw_values = $fe[‘raw_values’];

// Ktai ONLY
if (preg_match(‘/^(?:text|textarea)[*]?$/’, $type) && function_exists(‘is_ktai’) && is_ktai())
$_POST[$name] = mb_convert_encoding($_POST[$name], get_bloginfo(‘charset’) ,”SJIS”);

// Before validation corrections
if (preg_match(‘/^(?:text|email|captchar|textarea)[*]?$/’, $type))
$_POST[$name] = (string) $_POST[$name];

よし!

これで、簡単にフォームが追加できる!試しに、確認メールをお問い合わせユーザーに返信する設定で、メアドをdocomoにしてみたけど、OKだった。

は~。理屈は分かってんだけど、情報少ないし、大変だった。

参考サイト:http://d.hatena.ne.jp/v-m-s_memo/20081101/1225548282

この中で、ktai styleの作者のゆりこさんのコメントがあって、

「で、修正コードですが、SJIS 決め打ちはいろいろ問題が出そうです。現在は SJIS ないし SJIS-win しかないですが、将来的には is_ktai() が true でも UTF-8 になる可能性があるため、global $Ktai_Style; してから、$Ktai_Style->get(‘charset’) した値を使ってください。これならば、互換性が保てます。」

ということなので、

// Ktai ONLY
global $Ktai_Style;
$ktai_char = $Ktai_Style->get(‘charset’);
if (preg_match(‘/^(?:text|textarea)[*]?$/’, $type) && function_exists(‘is_ktai’) && is_ktai())
$_POST[$name] = mb_convert_encoding($_POST[$name], get_bloginfo(‘charset’) ,$ktai_char);

とかしたら、いいってことなのかな???

また、明日にでもテストしてみよう。。。 →これで、いけましたね。

追記:(09/08/17)

contact form 7のバージョンが新しくなったので、こちらに記載していたコードとコードの位置がどちらも変更になってしまった。(ketai styleもバージョンアップされている)

いい感じになったけど、ハックには不都合;

てことで、検索していたら、こちらで、モジュールを公開されているのを発見!
http://www.icoro.com/200908093906.html