デフォルトのゲスト購入可能仕様を不可にカスタマイズ
購入フロー中のレジに進むボタンをクリックすると、
ログイン画面にリダイレクトされる。
ログイン画面には、ゲスト購入ボタンも表示されるので、カスタマイズにてゲスト購入を不可にする。
Eccube4バージョン
- Eccube4.0.6
イメージ画像
twigファイルのログイン画面のゲスト購入を非表示
レジに進むで表示されるログイン画面は、通常のログイン画面と異なるsrc\Eccube\Resource\template\default\Shopping\login.twigのファイルで表示されている。こちらをコピーして、 app\template\default\Shopping\login.twigを作成。 71行目から下記のようにコメントアウトかコードを削除。
// 71: {# {% if is_granted('IS_AUTHENTICATED_REMEMBERED') == false %} <div class="ec-grid3__cell"> <div class="ec-guest"> <div class="ec-guest__inner"> <p>{{ '会員登録をせずに購入手続きをされたい方は、下記よりお進みください。'|trans }}</p> <div class="ec-guest__actions"><a class="ec-blockBtn--cancel" href="{{ url('shopping_nonmember') }}">{{ 'ゲスト購入'|trans }}</a> </div> </div> </div> </div> {% endif %} #}
71行目のis_grantedはtwigでも使用できるsymfonyで定義されたメソッドです。 'IS_AUTHENTICATED_REMEMBERED'は「自動的にログインする」機能によってログインしたユーザーの場合、trueが返されるので、== falseの場合は、ゲスト購入が表示されるように作成されています。
見た目を修正
非表示になっただけで、ポッカリと右側に空白ができるので、24行目あたりのcssを少し変更します。
// 24: <div class="ec-off2Grid"> <div class="ec-off2Grid__cell">
これで良い感じに中央に設置ができました。
Cotrollerの変更
これだけでは、もしshopping/nonmemberとURLを直接入力した場合、ゲスト購入はまだ可能な状態です。 なので、もしURLで直接アクセスを受けたとしても、トップページへリダイレクトを掛けておきます。 app\Customize\Controller\NonMemberShoppingController.phpを作成して下記のように記述。
<?php namespace Customize\Controller; use Eccube\Controller\AbstractShoppingController; use Symfony\Component\Routing\Annotation\Route; class NonMemberShoppingController extends AbstractShoppingController { /** * 非会員処理 * * @Route("/shopping/nonmember", name="shopping_nonmember") * @Route("/shopping/nonmember/shipping/{id}", name="shopping_nonmember_shipping", requirements={"id" = "\d+"}) */ public function index() { return $this->redirectToRoute('homepage'); } /** * お客様情報の変更(非会員) * * @Route("/shopping/customer", name="shopping_customer") */ public function customer() { return $this->redirectToRoute('homepage'); } }
URLからアクセスを受けた際にredirectToRoute()でトップページにリダイレクトを掛けています。
以上となります。
最後に
Eccubeはsymfonyのフレームワークで構成されています。もし「自力でもっとカスタマイズしたい」や「仕事でEccubeで開発することになった」方には、下記のsymofony4 入門の参考書をおすすめします。
こちらの参考書にはEccubeのカスタマイズ方法については、記載されてませんがカスタマイズに必要な知識のEntity、Controller、twig、Repositoryなどの利用方法が非常に分かりやすく書かれています。筆者も仕事でEccubeに携わることとなり、参考書を購入し理解が深まりました。
symfonyはLaravelと密接している部分もありLaravelの構成部分の理解も深まり有益でした。
価格帯は若干高めですが、中身はしっかりしているので、購入して損はないと思います。