CakePHP 1.2 で、ログアウト後の表示を分けたい場合の処理方法が分からなくて戸惑ったのでメモ。
通常はログアウト後にトップに戻るようにするので、
$this->Auth->userModelに指定したモデルのコントローラー(通常はusers_controller.php)で
function logout() {
$this->Auth->logout();
$this->redirect("/");
}
それ以外のページに飛ばしたい場合は、
app_controller.phpのbeforeFilterに設定。
飛ばしたいページが/pages/example/の場合、
//該当する条件分岐内で
$this->Auth->logout();
$this->redirect('/pages/example/');
で良いみたいです。
… 公式サイトとか検索でもlogoutRedirectがどうのこうのとしか見当たらなくてかなり右往左往したので、こんなにシンプルで良いのか不安になる。
wordpressのトップページの判別に is_front_page() と is_home()という条件分岐タグがありますが、動きが変なのでちょっと困った件。
基本的な動きのテストはこちらのページなどを参照。
is_front_page() と is_home() – swhrykの日記
ということでもともと取り扱い注意なややこしさをお持ちのタグなのですが、この上に、間にquery_postsを使うとfalseを返してくれちゃうので、あんまり使えるケースが無い気がします。。。
私の使い方が良くないのかしら。。。
トップページをindex.phpで作成していて、sidebar.phpで判別させたかったのですがquery_posts満載で当然使えなかったというケースでは、index.phpで変数にtrueを渡して、sidebar.phpでglobalにして判別させる、という手を使ってみました。
ただし、バージョン2.9.1でのお話なので、最新版だと解消されてるかも?と期待をしています(が、上記のケースではカスタムし過ぎて迂闊にバージョンアップ出来ないので未確認です)。
参照:
Conditional Tags « WordPress Codex
WordPressで会員制のサイトを作成する方法を試してみました。
プラグインで手軽に実現するなら、以下の2つ。
サイト全体を限定公開するならば
Private WP 2 をインストールしてRSS フィードも含めてログインしているユーザーしかブログにアクセスできないようにする。
一部を限定公開にするならば
WordPress Plugins/JSeries » Role Manager 日本語版 をインストールして、購読者をカスタマイズ。公開状態を非公開に設定した記事も閲覧出来るように(Read Private Pages, Read Private Postsを有効にすればOK)。
どちらもバージョン 2.9.1で動きました。
ただし、画像ファイルなどは完全に非公開になっていないので注意。
設定 > プライバシー を「