SOY Shopにも他のEC CMS同様マイページがあって、

会員登録、ログインや注文履歴が見れる。


このマイページのデザインはマイページ用のテンプレートを用意して、

そのテンプレートにフォームの部分を表示するための専用のタグを設置するという仕組みで、

フォームの出し分けはログイン状況とURLを見て行う。


この仕組みを踏まえた上で、

下記の様な質問がよくされます。




マイページのテンプレートは一つで様々なページを表示する。

ということで、


soyshop_mypage_1


上のログインしていない状態で表示されるページも


soyshop_mypage_2


ログイン後のページもメインカラムとサイドカラムの形式になる。

ログイン後は2カラム形式で良いけど、


soyshop_mypage_3


ログイン前はこんな感じで1カラム形式にすることは出来ないだろうか?と


この対応はそんなに難しくないんだけど、

遠方の方に説明するのが面倒だったので、

下記の様な機能を追加した。


ログインしていない時は別のテンプレートを読み込み表示する




例えば、マイページ用のテンプレートのIDをbryonで設定していたとする。


soyshop_mypage_1


マイページを開いた時、

/ルート/ショップID/.template/mypage/bryon.htmlが読み込まれ、

bryon.html内にあるアプリケーションタグがコンテンツに置換されるわけだが、


ログインしていない時に、

/ルート/ショップID/.template/mypage/bryon_no_login.iniと

/ルート/ショップID/.template/mypage/bryon_no_login.htmlといった、

マイページID + _no_loginというテンプレートがあれば、

そちらのテンプレートを読みにいくという処理を追加して、


soyshop_mypage_a


ログインしている時としていない時で違うテンプレートを扱える様にしました。

※マイページID + _no_loginは管理画面から生成することが出来ません。ご利用の際はサーバに直接アップロードしてください。


今回の機能はフォーラムに投稿していますので、

ご利用の方はフォーラムからダウンロードしてください。

SOY CMS フォーラム • トピックの表示 - マイページでログインの有無でテンプレートを分ける機能を追加しました


私の管理しているリポジトリからもダウンロード可能です。

https://github.com/inunosinsi/soycms/tree/master/package/soyshop