rui live note

WordPress、PHP、子育て、ブログ、将棋、コワーキング、子育て、群馬等に関する日々感じたことを書いているブログです

*

EC-CUBEで全ページからログインチェックができるようにしてみる

      EC-CUBE

  • このエントリーをはてなブックマークに追加
  • Pocket

ログイン

最近とある用事で、初めて EC-CUBE をガリガリとカスタマイズしています。

始めに構造を理解するまではどうしても時間がかかりますが、ある程度理解してしまえば何とかなりそうな感触はつかめてきました。それなりに規模が大きいシステムなので、ソース解析には Vim + GLOBAL さまさまという感じですね。

せっかくの機会なので、よく使えそうな小ネタでもあればこちらに残していこうと思っています。

さて、ログインしている時としていない時でページの表示を切り替えたいっていう要望はどこでもありますよね。今回はそんな時に使える、ログイン状態のチェックをどのページでもできるようにする方法です。

なお、EC-CUBEは Ver 2.13.2の環境です。

カスタマイズ方法

EC-CUBE には、ログインの判定結果を tpl_login という変数にセットしているいくつかのページがデフォルトで存在します。

例えば、下記のようにソースを grep すると、tpl_login に値をセットしている箇所が見つかります。

$ grep -rn "\$this\->tpl_login =" *
data/class/pages/products/LC_Page_Products_Detail.php:240:            $this->tpl_login = true;
data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Login.php:43:        $this->tpl_login = false;
data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Login.php:72:            $this->tpl_login = true;
data/class/pages/shopping/LC_Page_Shopping_Payment.php:95:            $this->tpl_login = '1';
data/class/pages/shopping/LC_Page_Shopping_Confirm.php:129:            $this->tpl_login = '1';
data/class/pages/cart/LC_Page_Cart.php:200:            $this->tpl_login = true;

上記は、名前からも察しがつくように、商品詳細ページ、ログインブロック、カートページ、・・・といった特定のページを表示する時に使われるクラスなのですが、これらのページでは変数 tpl_login にセットされたログインしているか(true)否か(false)の結果によって、次のようにテンプレート内の表示を切り分けることができます。

<!--{if $tpl_login}-->
ログイン中です。
<!--{else}-->
ログインしていません。
<!--{/if}-->

さて、これを特定のページに限らずどのページからも使えるようにしてみましょう。

ページ表示する際に必ず呼び出される LC_Page という基底クラス LC_Page(data/class/pages/LC_Page.php)があります。その拡張クラスである LC_Page_Ex(data/class_extends/page_extends/LC_Page_Ex.php)に、次のようなコードを追加します。

public function init()
{   
    parent::init();

    // ログイン判定
    $objCustomer = new SC_Customer_Ex();
    if ($objCustomer->isLoginSuccess() === true) {
        $this->tpl_login = true;
    }   
}  

これで、どのページからも tpl_login にログイン判定結果がセットされるようになりました。

同様に LC_Page_Ex に処理を追加することで、全ページ共通で参照したい情報をセットしておくことが可能です。知っておくと役に立つ場面がありそうですね。

photo credit: Sean MacEntee via photopin cc

ad

この記事が気に入ったらシェアしてもらえると嬉しいです!

  • このエントリーをはてなブックマークに追加
  • Pocket
  • follow us in feedly
  • RSS

  関連記事

高校野球
いらすとやで歌おう!「栄冠は君に輝く」

さて梅雨も明け、今年も熱い夏がやってきましたね。 世間はすっかりリオ五輪の話題で …

パスタ
500円でお得ランチをGET!「ランチパスポート 前橋・高崎 Vol.5」が4月10日発売!

当ブログでも何度かレポートさせて頂いている「ランチパスポート 前橋・高崎」。いよ …

notify_from_wp
WordPressからLINE Notifyにメッセージを通知してみた

先日いじってみた LINE Notify が面白かったので、今度は WordPr …

鍵
WordPressで不正アクセス履歴がチェックできるプラグイン「Crazy Bone(狂骨)」でセキュリティ意識を高めよう

とあるサイトのお客さんから、WordPress管理画面のログイン履歴が確認したい …

アドベントカレンダー
アドベントカレンダー2014の登録が続々始まってます。今年は何に参加しようかな。

もう11月か早いなあ・・・と耽っていたのも束の間、ネット上でははやアドベントカレ …

コロコロコミック
次世代ワールドホビーフェアに行くならコロコロコミックのVIP入場券を応募しておこう!

コロコロキッズたちの胸を焦がすビッグイベント「次世代ワールドホビーフェア ’15 …

LINE BOT API
LINE BOT API が動かない時に確認するポイント

初めてLINE BOT API でボットを作ってみた記事を昨日書いたのですが、正 …

Dropbox
BackWPupプラグインでDropboxへのバックアップがAPIエラーになる場合の対処方法

BackWPup というプラグインを使って、WordPress のバックアップを …

われ敗れたり
電王戦の本当の勝利者は将棋ファンと米長氏。「われ敗れたり」を読んで。

今年の第3回電王戦が終わってしばらく経ってしまいましたが、今さらながら読みました …

Contact Form 7
Contact Form 7で使える特別メールタグや独自タグの作成方法など

photo credit: Kalexanderson via photopin …