Contents
はじめに
こんにちは、野村です。
先日、久々にXOOPSでサイトを作りました。その時のメモです。
メインのモジュールはXPWiki。Pukiwikiから派生したCMS内CMSです。
公開wiki(だれでも記事を投稿/更新可能)としての機能があるけど、今回は管理者のみが記事の投稿/更新を行える仕様にしました。
で、このXPWiki、独自のツールバーとナビゲーションバーが表示されます。
それらには、管理権限のないユーザにとって無用なボタンばかり並んでいるのですよ。
なので、管理権限のないユーザのアクセス時には無用なアイテムを隠すことにしました。
カスタムブロックを利用する
・カスタムブロックを作成し、XPWikiにアクセスしたときにだけ表示するように設定します。
・カスタムブロックのタイトルは無記入にします。
・カスタムブロックの種類は、「カスタム(PHP eval())」です。
$root = XCube_Root::getSingleton();
if ( $root->mContext->mUser->isInRole('Module.xpwiki.Admin') ) {
// 管理権限のあるユーザがアクセスした時の処理(何もしない)
} else {
// 管理権限のないユーザがアクセスした時の処理
echo '
<style>
div.toolbar{display:none}
div.navigator{display:none}
</style>
';
}
これでツールバーとナビゲーションバーが隠れます。
解説
キモはここ。
$root->mContext->mUser->isInRole('Module.xpwiki.Admin')
赤い字で示した部分は、モジュールを格納しているデレクトリの名前になります。
終わりに
以上、XOOPSで管理権限のないユーザのアクセス時に処理を分岐する方法を紹介しました。
場合によっては、テンプレートをいじるより手軽です。
XOOPSといえば、一時は(日本限定で)全盛を極めたCMS。最近は旗色が悪いですな。
個人的には好きなCMSなのですよ。
でもいざ今使ってみると、よっぽど手を加えないとSEO的に不利な気がするな。
というわけで、今回はこれにて。