eccube3 htmlの階層のまま、トップドメインでアクセスする方法

こんな使い方!

eccube3系をサーバにインストールする際、FTP転送を使うのが一般的。
ただしインストールした後のURLは
http://hogehoge.com/html/
これになってしまいます。
問題ないかもしれませんが、あまり格好がよくないですよね。

http://hogehoge.com/html/index.php
ではじまるものを
http://hogehoge.com/index.php
にする


やり方

変更するファイル
httpdocs/html/


httpdocs/中に

index.php

require __DIR__.’/../autoload.php’;

require __DIR__.’/autoload.php’;

この時点では、まだエラーがでます。

次に、path.ymlの書き換え
/app/config/eccube/path.yml

変更前

変更後

問題なければ、とりあえず成功!


まとめ

http://hogehoge.com/html だったeccube3が
http://hogehoge.com/ でアクセスが可能になります。

ECCUBEのこのあたりはURLの変更などは、昔から変わらず、インストールする際に自動的に選択できたり
管理画面から変更できるようになると便利なんだけど、今後のバージョンアップに期待しましょう。

完了すれば問題なく表示ができますので、デザインやシステムのカスタマイズをする前に
動作のチェック
1)フロント側がエラーなく表示される
2)管理画面にログインできる/ログアウトもできる
3)会員登録ができる
4)商品登録ができる
5)商品購入ができる

eccube3カスタマイズ方法[事前準備編]

こんな使い方!

eccube3系を共有サーバにインストールする際、FTP転送を使うのが一般的。
ただしインストールした後のURLは
http://ドメイン/html/
これになってしまいます。
問題ないかもしれませんが、あまり格好がよくないですよね。

http://ドメイン/ これで動かすようにする手順をメモ。
ちなみに筆者は、ヘテムルの共有サーバで実装してます。


やり方

変更するファイル
/app/config/eccube/path.yml
のhtml/箇所を一括で置き換え

置き換え前 /html/~~~
置き換え後 /~~~~~

*置き換え後のファイル

/index.php

require __DIR__.’/../autoload.php’;

require __DIR__.’/autoload.php’;

この時点では、まだエラーがでます。

次に、/html/フォルダ内を、ドキュメントルート直下に移動します。

移動前
/html
20150913-1

移動後
20150913-2

*ドキュメント直下にある htaccessは、ひまず_bakに。

完了すれば問題なく表示ができますので、デザインやシステムのカスタマイズをする前に
動作のチェック
1)フロント側がエラーなく表示される
2)管理画面にログインできる/ログアウトもできる
3)会員登録ができる
4)商品登録ができる
5)商品購入ができる

問題なければ、とりあえず成功!


まとめ

http://ドメイン/html だったeccube3が
http://ドメイン/ でアクセスが可能になります。

ECCUBEのこのあたりはURLの変更などは、昔から変わらず、インストールする際に自動的に選択できたり
管理画面から変更できるようになると便利なんだけど、今後のバージョンアップに期待しましょう。

*ドキュメント直下にシステムファイルを置く場合セキュリティ的にちょっと怖いのもあるので
このあたりは、注意してくだいね。

eccube3を共有サーバにFTP転送を使い、インストールしてURLを変える方法

こんな使い方!

eccube3系を共有サーバにインストールする際、FTP転送を使うのが一般的。
ただしインストールした後のURLは
http://ドメイン/html/
これになってしまいます。
問題ないかもしれませんが、あまり格好がよくないですよね。

http://ドメイン/ これで動かすようにする手順をメモ。
ちなみに筆者は、ヘテムルの共有サーバで実装してます。


やり方

変更するファイル
/app/config/eccube/path.yml
のhtml/箇所を一括で置き換え

置き換え前 /html/~~~
置き換え後 /~~~~~

*置き換え後のファイル

/index.php

require __DIR__.’/../autoload.php’;

require __DIR__.’/autoload.php’;

この時点では、まだエラーがでます。

次に、/html/フォルダ内を、ドキュメントルート直下に移動します。

移動前
/html
20150913-1

移動後
20150913-2

*ドキュメント直下にある htaccessは、ひまず_bakに。

完了すれば問題なく表示ができますので、デザインやシステムのカスタマイズをする前に
動作のチェック
1)フロント側がエラーなく表示される
2)管理画面にログインできる/ログアウトもできる
3)会員登録ができる
4)商品登録ができる
5)商品購入ができる

問題なければ、とりあえず成功!


まとめ

http://ドメイン/html だったeccube3が
http://ドメイン/ でアクセスが可能になります。

ECCUBEのこのあたりはURLの変更などは、昔から変わらず、インストールする際に自動的に選択できたり
管理画面から変更できるようになると便利なんだけど、今後のバージョンアップに期待しましょう。

*ドキュメント直下にシステムファイルを置く場合セキュリティ的にちょっと怖いのもあるので
このあたりは、注意してくだいね。

アクセス数が高いサイトは要注意!ECCUBE 2.13系 スマートフォンサイトの注文確認ページのTPLでバグ。。。

概要

弊社では、高トラフィックに対応したECCUBEの構築も対応しております。
*高トラフィック/高アクセス →瞬間的なアクセスの増幅(瞬間的同時接続:4000ユーザー)
例)何時何分より一斉に販売開始 ユーザーはその時間に購入する準備をしている。
サーバも分散し、もちろんデータベースも独立させて、ロードバランサーなるものを入れて対応してます。

今回のこの記事は、ECCUBEの2.13系で起きたバグ?なんですが、スマフォサイトを持ち、かつ、決済モジュールを利用してない支払い方法の際は、要注意な記事になります。

*高トラフィックではない、利用者も一度調査が必要です。

商品をカゴに入れ、決済方法を選び、確認画面から、注文完了ボタンを押す際の、javascriptの記述に、デフォルトのテンプレートで記述ミスがありました。

要は『連続クリック禁止』のためのjavascriptの記述に問題があります。

ここで、制限を入れてあげないと、受注が重複して立ってしまう誰も得しない、何とも面倒なことが起きてしまいます。


調査方法:スマートフォンサイト

(1)商品をカートに入れる
(2)支払い方法を、決済モジュールを利用してないものを選ぶ(よくあるパターンだと、銀行振込、代引きなど)
(3)確認画面に進む
(4)注文完了ボタンを連続クリックする(筆者はサーバが落ちるまでやってみました。)
(5)データベースに受注データを書き込み中
(6)エラー画面が表示される
(7)同じ受注が何件も立ってしまう(筆者は最大で11件)

*ちなみにPCサイトでは、しっかり、「連続クリック防止」のjavascriptが機能してますので、よほどのことがない限り、重複オーダーは立つことはありません。(0とは言えない。)


解決策:スマートフォン

改修するファイルはtemplateファイルで1箇所。
/data/Smarty/templates/sphone/shopping/confirm.tpl
デフォルトの記述は、以下ののようなソースなのですが

よく見受ける、ソースですね。
しかしこれが、注文完了ボタンのソースを見ると

冒頭に記述されてる、fnCheckSubmit() が、ボタン内でセットされてないではありませんか(笑)
*笑いごとではないです。本当に。

これでは、ユーザーさん側は、注文完了ページが表示されない場合は、何度もクリックしてしまいます。


そこで以下のように改修
冒頭のjavascriptは、そのまま生かすことにします。

注文完了ボタンだけ記述方法を変更
*サイトのデザインに合わせて改変してください。

これで2回目以降にボタンをクリックしても、重複オーダーが発生することがほぼ無くなります。(0ではない)
IMG_0211


まとめ

高機能なオープンソースでも、このようなバグなどは、つきものです。
カスタマイズをした部分だけデバックするのではなく、基本機能もしっかりデバックすることが、重要だということですね。

ぜひ、一度この件に関して、ご興味、調査が必要なお客様は、お気軽にお問い合わせください。

EC-CUBEの話(2) マスターデータを利用したお問い合わせフォーム

こんな使い方!

お問い合わせフォームの項目で、項目内容の変更が頻繁にある場合など、いちいちソースを書き換えるのは面倒くさいです。
そんなときは、マスターデータに登録してしまいしょう。

例)セミナーの申し込みなどは、申し込み日が過ぎると次回の申し込みフォームに流用するこもあり、日程などの書き換えはマスターデータでできるようにしちゃう。


改修するファイル

1. マスターデータのテーブルにデータの追加
2. phpファイルの改修
3. テンプレートファイルの改修 PC版の入力ページ/確認ページ SMP版の入力ページ/確認ページ
4. メールテンプレートの改修
5. テストをして動作の確認をする


マスターデータにテーブルの新規追加

簡単なやり方な場合は、mtb_jobs の定義だけを拝借して、コピー。
今回は、contact_day というテーブル名で追加します。

この時点で、管理画面の
システム設定>マスターデータ管理 のプルダウン項目に contact_day というのが表示されます。
中をみても、データ自体は、まだ入力してないので、空です。
IDと値を入れていきましょう。

完成の図!
マスターデータ追加


phpファイルの改修

/data/class/pages/contact_entry/LC_Page_Contact.php
まずは、マスターデータの読みこみを

$objFormParam->addParamに
入力フォームのチェックを追加

ひとまずPHPはこれでOK


テンプレートファイルの改修

入力画面

基本的に今回はPC版だけです。
/Smarty/defult/contact/index.tpl
に追加します。

今回は、セレクトボックスでもなく、ラジオボタンでもなく、一番苦手な、チェックボックスで表示します。
※カスタマイズするときによく使う技!デバックを出す方法

これをテンプレートの一番上に記述しておきます。
そうすると、Debug文が表示されて現在のmtb_contact_day の値が表示されます。

マスターデータの項目を表示されるソース

表示の図
マスターデータ追加時のフロント側入力ページ

確認画面

/Smarty/defult/contact/confirm.tpl

入力画面で入力した項目を今度は表示させます。


メールのTPLに表示

お問い合わせフォームのメールテンプレートに新しく追加した項目を表示

これで、メールテンプレートにも表示がされます。


まとめ

これで無事に設定は完了です。
更新頻度が高い場合は、ぜひマスターデータに情報を登録して、管理画面上から簡単に更新できるようにすることができるのもEC-CUBEの魅力です。
みなさんもぜひやってみてください。