EC-CUBEカスタマイズで独自のエラーページを表示させるには?
EC-CUBEでオリジナルのエラーページを表示させる「正しい」方法の紹介です。
EC-CUBE 2.12系以降ではエラー表示も適当に表示させてはいけません。
ちゃんとやり方があるので、ここでしっかり覚えておきましょうね。
EC-CUBEのバージョンは2.12.2をベースに解説しています。
SC_Utils_Ex::sfDispSiteError()関数を使う
エラーの表示には SC_Utils_Exクラス(正確にはSC_Utilsクラスに定義してありますが…)のsfDispSiteError()関数を使います。
//ユーザーからの不正なアクセスがあった場合 SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR, '', true);
この関数の中ではExitが使われているので、後処理を書いても無視されます。
パラメータは以下の4つです。
- (定数)エラータイプ(オプション)※後述
- (SC_SiteSession)セッションインスタンス(オプション)
- (boolean)「戻る」ボタンを「トップに戻る」ボタンにするかどうか(オプション)
- (文字列)カスタムエラーメッセージ(オプション)※後述
この中で主に利用するのはエラータイプと4つめのカスタムエラーメッセージでしょう。
定番のエラータイプは以下に示す表から合うものを選んで指定します。
エラータイプ&メッセージ一覧
エラータイプ | エラーメッセージ | |
---|---|---|
PRODUCT_NOT_FOUND | ご指定のページはございません。 | 404 |
PAGE_ERROR | 不正なページ移動です。 | |
CART_EMPTY | カートに商品ががありません。 | |
CART_ADD_ERROR | 購入処理中は、カートに商品を追加することはできません。 | |
CANCEL_PURCHASE | この手続きは無効となりました。以下の要因が考えられます。<br /> ・セッション情報の有効期限が切れてる場合<br /> ・購入手続き中に新しい購入手続きを実行した場合<br /> ・すでに購入手続きを完了している場合 |
|
CATEGORY_NOT_FOUND | ご指定のカテゴリは存在しません。 | 404 |
SITE_LOGIN_ERROR | メールアドレスもしくはパスワードが正しくありません。 | |
TEMP_LOGIN_ERROR | メールアドレスもしくはパスワードが正しくありません。<br /> 本登録がお済みでない場合は、仮登録メールに記載されている<br /> URLより本登録を行ってください。 |
|
CUSTOMER_ERROR | 不正なアクセスです。 | |
SOLD_OUT | 申し訳ございませんが、ご購入の直前で売り切れた商品があります。 この手続きは無効となりました。 |
|
CART_NOT_FOUND | 申し訳ございませんが、カート内の商品情報の取得に失敗しました。 この手続きは無効となりました。 |
|
LACK_POINT | 申し訳ございませんが、ポイントが不足しております。 この手続きは無効となりました。 |
|
FAVORITE_ERROR | 既にお気に入りに追加されている商品です。 | |
EXTRACT_ERROR | ファイルの解凍に失敗しました。n 指定のディレクトリに書き込み権限が与えられていない可能性があります。 |
|
FTP_DOWNLOAD_ERROR | ファイルのFTPダウンロードに失敗しました。 | |
FTP_LOGIN_ERROR | FTPログインに失敗しました。 | |
FTP_CONNECT_ERROR | FTPログインに失敗しました。 | |
CREATE_DB_ERROR | DBの作成に失敗しました。n 指定のユーザーには、DB作成の権限が与えられていない可能性があります。 |
|
DB_IMPORT_ERROR | データベース構造のインポートに失敗しました。n sqlファイルが壊れている可能性があります。 |
|
FILE_NOT_FOUND | 指定のパスに、設定ファイルが存在しません。 | |
WRITE_FILE_ERROR | 設定ファイルに書き込めません。n 設定ファイルに書き込み権限を与えてください。 |
|
DOWNFILE_NOT_FOUND | ダウンロードファイルが存在しません。<br /> 申し訳ございませんが、店舗までお問合わせ下さい。 |
|
FREE_ERROR_MSG | $this->tpl_error=$this->err_msg; | |
未指定 | エラーが発生しました。 |
オリジナルのエラーメッセージを表示する場合
オリジナルのエラーメッセージを表示する場合は、エラータイプをFREE_ERROR_MSGにして、4番目のパラメータに表示させたい文字列を指定します。
SC_Utils_Ex::sfDispSiteError(FREE_ERROR_MSG, '', false, 'お問い合わせください。');
HTTPステータスを指定したい場合
エラーを表示させる際にブラウザに伝えるHTTPステータスコードを指定したい場合は、SC_Response_Ex::sendHttpStatus()関数を使います。
SC_Utils_Ex::sfDispSiteError(FREE_ERROR_MSG, '', false, 'ご指定のページは以下のページに移転しました。<a href="http://www.example.com/hoge.html">http://www.example.com/hoge.html</a>'); SC_Response_Ex::sendHttpStatus(301);
というわけで、エラーページの表示方法を解説は以上です。ではまた!
2013-01-22