EC-CUBE3ではログアウト時にカート内の商品が消えてしまいます。これはログアウト時にinvalidateメソッドによりセッションの破棄を行っているためです。

カートの商品を維持するにはinvalidate_sessionの設定をfalseに設定する方法があります。invalidate_sessionがtrueのままですとログアウト時にセッションが破棄されてしまい、カート内の商品が破棄されることになります。一方、invalidate_sessionをfalseにするとセッションは維持されます。

Application.phpにて下記コードのように、ショップ・管理画面共にログアウト時のinvalidate_sessionをfalseに指定してやります。

 

このカスタマイズを行うことでセッションを利用している機能やプラグインで予期せぬ動作が起こる可能性がございますので、慎重にご使用ください。

単純にinvalidate_session=falseに設定する以外にも、独自のSessionLogoutHandlerを実装してやるという方法もあります。

関連するカスタマイズ

Bootstrap3のクラスform-controlを取り除く方法(form_widget)... EC-CUBE3.0系ではSymfonyComponentの1つであるFormにより、Twig内では強力な関数form_widget、form_errorsが使用できます。 これらは作成したFormType(定義ファイル)に従って自動で初期データ入力やエラー処理をしてくれるというたいへん便利な...
管理画面のパスワードを紛失・忘れた時に再設定する方法... 管理画面のパスワードを忘れてログインが不可能になった場合、EC-CUBE上で再設定する方法はありません。DB上で直接暗号化されたパスワード(ハッシュ)を修正するか、ソースコードを修正してパスワードなしでログインした上で自分のパスワードを変更する必要があります。 ハッシュを修正するには一定の知識...
ロゴブロックに入っているh1タグを動的に変更する方法... EC-CUBE3.0の標準テンプレートでは、ロゴエリアはブロックとして配置されており、コントローラと紐付けられていないため、内容を動的に変更するのが若干手間となっています。 今回はh1タグをここに配置したまま商品名やカテゴリ名を動的に入れられるようにする方法をご紹介します。 考え方として...
特定のページへアクセス制限をかけログイン必須にする方法... EC-CUBE3がベースにしているSymfony2では各ページに表示権限を与えることができます。 この仕組みによってログインユーザーのみページを表示する・しないという設定ができます。 $appによる指定を行います。 /src/Eccube/Application.phpに下記のよう...