EC-CUBEカスタマイズで独自のエラーページを表示させるには?

カスタマイズされた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つです。

  1. (定数)エラータイプ(オプション)※後述
  2. (SC_SiteSession)セッションインスタンス(オプション)
  3. (boolean)「戻る」ボタンを「トップに戻る」ボタンにするかどうか(オプション)
  4. (文字列)カスタムエラーメッセージ(オプション)※後述

この中で主に利用するのはエラータイプと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