[OpenPNE3]ログイン状態に応じてフッターを書きかえる

カテゴリ: OpenPNE3,php / author: uechoco / 2009年01月30日 16:00:26
この記事を読む時間:327くらい

 OpenPNE2では、HTML挿入機能としてログイン前フッターとログイン後フッターを書きかえる機能がありました。OpenPNE2で存在していた機能は原則としてOpenPNE3でも実装される予定ですが、いつになるかはわかりません。今回は手ごろなフッター書き換えを学んで、OpenPNEテンプレートカスタマイズの感覚を掴みたいと思います(OpenPNE 3.0.0対応)。

 OpenPNE3のフッターを見てみます。
index_friend_list_full

 現状、OpenPNE3のフッターは、ログイン前もログイン後も下図のような「Powered by OpenPNE」という文字列です。
index_friend_list_partial

 この文字列は、内部のテンプレートで直書きになっているので、管理画面などから書き換えることはできません。ここを直接書き換えて、ログイン前とログイン後のフッターを変化させたいと思います。

#1 _footer.phpテンプレートの編集

 フッターのテンプレートは、/apps/pc_frontend/templates/_footer.phpにあります。このファイルはOpenPNE3.0.0では以下のようになっています。

php:
  1. <p>Powered by <a href="http://www.openpne.jp/" target="_blank">OpenPNE</a></p>

 これを、以下のように書き換えます。

php:
  1. <?php if (($member = $sf_user->getMember()) && $member->getIsActive()): ?>
  2. <p>Powered by <a href="http://www.openpne.jp/" target="_blank">OpenPNE</a>(ログイン後)</p>
  3. <?php else: ?>
  4. <p>Powered by <a href="http://www.openpne.jp/" target="_blank">OpenPNE</a>(ログイン前)</p>
  5. <?php endif; ?>

  • $sf_user->isAuthenticated()の返り値のtrue/falseで判断すると、ほとんどの場合は困りませんが、仮登録者の本登録フォームなどで不具合が発生します。仮登録ユーザも「仮登録者として登録済み」と判断され、認証が通ってしまうのが原因です。これはOpenPNE3で認証識別子credentialsとしてSNSMemberだけでなく、SNSRegisterBeginやSNSRegisterFinishなどを用意していることから分かります。
  • 本登録済みのメンバーかどうかを判断するには、$sf_user->getMember()でMemberクラスのインスタンスの取得を試みて、取得できた場合、getIsActive()メソッドのtrue/falseでアクティベート(本登録)済みかどうかを判断します。

#2 結果の確認

 ログイン画面、仮登録者の本登録画面、ログイン済みメンバーのホーム画面の3つ見てみると、ログイン済みの画面だけフッターが書き変わっているのがわかると思います。

  1. ログイン画面(メンバーではない)
    index_member_login
  2. 仮登録者の本登録画面(メンバーではあるが、本登録が済んでいない)
    index_member_registerinput
  3. ログイン済みメンバーのホーム画面(本登録済みのメンバー)
    home

#3 お好みでCSSも

 /web/css/main.cssにフッターのCSSを定義した部分があります。例えば「#Footer p」のtext-alignをcenterにするとかできます。

今回の記事に関して、あってるとか、まちがってるとか、もっといい方法があるとかがあれば、コメントなどでアドバイスください。


コメントはまだありません »

コメントはまだありません。

この投稿へのコメントの RSS フィード。 TrackBack URI

コメントする

Copyright © 2012 うえちょこ@ぼろぐ. WP Theme created by Web Top.