【XOOPS】管理権限のないユーザのアクセス時に処理を分岐する

はじめに

こんにちは、野村です。

先日、久々に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的に不利な気がするな。

というわけで、今回はこれにて。

シェアする

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

フォローする

野村 野村のプロフィール
メインPCはWindows10のVirtualBox上のFreeBSD。Linux/Unixの小ネタを求めて日々右往左往してたりする。