2.11.1 ヘッダーやページ内などブロック以外の場所にログアウトボタンを設置する

しばらく悩んでいましたが、どうにか2.11.1系でも実装が出来たので、自分用メモ。


EC-CUBEには最初から「ログイン」ブロックがありますが、
サイトのデザイン上、メールアドレスとパスワードを入力するフォームを
常に表示させたくなかったりすることがよくあります。
「ログインボタンからログインページに移動して、そこからログインしてもらえればいいやー(´ー`)」
って場合ですね。


以前の2.4.x系ではテンプレート自体をブロック化させたり、ファイルを新しく作成したり、
何かと手間のかかるカスタマイズでありましたが、
2.11.1では「【ヘッダー】ログイン」ブロック内のソースを流用して実装します。

ログイン/ログアウトの判定をつける

以下のソースをメニューやヘッダー、フッターなどの切替えたいリンクの場所へ追加します。
(今回は、ログイン・ログアウトの切り替えと、会員登録・MYページの切り替えをします。)

<form name="header_login_form" id="header_login_form" method="post" action="<!--{$smarty.const.HTTPS_URL}-->frontparts/login_check.php" onsubmit="return fnCheckLogin('header_login_form')">
<input type="hidden" name="mode" value="login" />
<input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" />
<input type="hidden" name="url" value="<!--{$smarty.server.PHP_SELF|h}-->" />
<!--{if $smarty.session.customer|@count > 0}-->

<!-- ***  ここにログイン時の表示を書きます *** -->
<li class="member"><a href="<!--{$smarty.const.URL_MYPAGE_TOP}-->">MYページ</a></li>
<li class="login"><a href="<!--{$smarty.const.HTTPS_URL}-->mypage/login.php" onclick="fnFormModeSubmit('header_login_form', 'logout', '', ''); return false;">ログアウト</a></li>

<!--{else}-->

<!-- *** ここにログアウト時の表示を書きます *** -->
<li class="member"><a href="<!--{$smarty.const.ROOT_URLPATH}-->entry/kiyaku.php">会員登録</a></li>
<li class="login"><a href="<!--{$smarty.const.HTTPS_URL}-->mypage/login.php">ログイン</a></li>

<!--{/if}-->
</form>


こんな感じで出来るかな、と思います(・ω・)
ちなみにですが、既存のログインブロックを併用しますと、
ログアウトの処理が正しくできなくなります。
セッションで見てるから・・・なんですけど。どうにか他の方法ないですかねorz
検索処理なんかも、もしかしたら干渉するかもしれない(検証はしてないけど)