対応事例
ダウンロード商品購入時にログイン画面に誘導する方法:EC-CUBE
この記事は最終更新から4年以上経過しています。内容が古くなっている可能性があります。

EC-CUBEでダウンロード商品を購入するためには会員登録とログインが必要ですが、
ログインしないまま購入ボタンを押すと「ダウンロード商品を含むお買い物は、会員登録が必要です。お手数ですが、会員登録をお願いします。」というなんとも味気ない画面が表示されます。
しかもこの画面、
なんと、
「戻る」ボタンを押すとTOPページにジャンプします。
改善点として挙がった形跡もありますが、今のところ実装に至ってはいないようです。
ということで、今回はエラー画面を出さずに、通常商品購入時と同じようにログイン画面に遷移させる方法です。
/data/class/pages/shopping/LC_Page_Shopping.php の編集
96行目からの下記の記述を探して
// ログイン済みの場合は次画面に遷移
if ($objCustomer->isLoginSuccess(true)) {
SC_Response_Ex::sendRedirect(
$this->getNextlocation($this->cartKey, $this->tpl_uniqid,
$objCustomer, $objPurchase,
$objSiteSess));
SC_Response_Ex::actionExit();
}
// 非会員かつ, ダウンロード商品の場合はエラー表示
else {
if ($this->cartKey == PRODUCT_TYPE_DOWNLOAD) {
$msg = 'ダウンロード商品を含むお買い物は、会員登録が必要です。
'
. 'お手数ですが、会員登録をお願いします。';
SC_Utils_Ex::sfDispSiteError(FREE_ERROR_MSG, $objSiteSess, false, $msg);
SC_Response_Ex::actionExit();
}
}
103行目~111行目を削除してしまいます。
// ログイン済みの場合は次画面に遷移
if ($objCustomer->isLoginSuccess(true)) {
SC_Response_Ex::sendRedirect(
$this->getNextlocation($this->cartKey, $this->tpl_uniqid,
$objCustomer, $objPurchase,
$objSiteSess));
SC_Response_Ex::actionExit();
}
でも、これだけですと「ダウンロード商品の購入に会員登録が必要」だと分かりませんから、ログインページに追記したり、
ダウンロード商品しか取り扱いが無いのであれば、いっそ「会員登録をせずに購入」を非表示にしてしまっても良いかもしれません。
こちらの方法は2.13だけでなく2.12等でも使えることを確認していますが、ECーCUBEはバージョンによってそのままでは正しく動作しない場合があります。
ご対応が難しい場合にはご相談いただけますようお願いいたします。

