Nicolaas Franckenという方が、sunny.svnrepository.com-membersonlypages-r2003.tar.gzというファイルでモジュールを公開されています。このモジュールが、一番簡単ではないかと思います。2010/5/6日現在、リビジョン番号はr2003のようですが、日々更新されていきますので、この部分は変わっていきます。
まず中身を展開して、そのトップディレクトリーの名前を「membersonlypages」のように短くして、mysiteと同じレベルのディレクトリに置きます。あとは、mysite/_config.php内の最後にでも、以下の3行を追加します。
MembersOnlyPage::set_group_code("intranet-users");
MembersOnlyPage::set_group_name("intranet users");
MembersOnlyPage::set_permission_code("INTRANET_USERS");
さらに、展開したモジュール内(例えば「membersonlypages」)のcode/MembersOnlyPage.php内で設定されている「static $icon」のパス名を変更するか、設定されているパスにアイコンをコピーするなどをしておきます。そして、MembersOnlyPageクラスに対するページ・テンプレート「MembersOnlyPage.ss」を、使用しているテーマのtemplateフォルダに作成しておきます。
これで、dev/build?flush=1を実行させ、その後ログインしてSilverstripeの管理メニューのセキュリティタブを開くと、上記のグループが登録されています。そこでアクセスできるID(メールアドレス)とパスワードを登録しておけば、OK。
つぎに、新規ページを作成する際に、「Page」ではなく、「Members Only Page」を選んで作成します。このページの「メタデータ」タブを開き、URLを「http://www.yoursite.com/members-only/」のようにしておきます。
保存して公開すると、そのURLでページにアクセスする際に、「このページはセキュリティで保護されています。証明書キーを下記に入力してください。こちらからすぐに送信します」というメッセージのあるログイン画面になります。そこで登録しておいたID(メールアドレス)とパスワードを入力すれば、専用ページを表示させることができます。
このメッセージは英語の直訳のようで少々気持ちが悪いと思う方は、sapphire/lang/ja_JP.php内にある$lang['ja_JP']['Security']['NOTEPAGESECURED'] の日本語を変更すればいいでしょう。「こちらからすぐに送信します」という言葉はいらないですね。なにを送信するの?と考えてしまいます。
色々なMembersOnlyPageを作りたい場合、このモジュール内のMembersOnlyPagesクラス名などを全部変更して新しい専用Page名を作成できるようにして、さらに前述の3行を新しいクラス名に置き換えたものを追加することになります。
追記: 長々と説明してありますが、何もしなくてもメンバー専用ページを作れました。 CMSにログインして、「セキュリティ」メニューから新しいグループを作成して メンバーを登録します。メンバー専用ページを作成する際、「アクセス」タブを 開いて、「この人達だけ」を選んで、そこに先ほどのグループを指定するだけです。 さらに、「動作」タブを開いて、「メニューに表示しますか?」のチェックを外し、 「検索に表示しますか」のチェックも外しておきます。これだけでOKなのですが、 なぜこんなモジュールがあるのか不思議ですね。 結局、このモジュールは使う必要なんて無かったという事ですね。
