DokuWikiの開発 グローバル変数と定数について解説

DokuWikiDokuWiki
この記事は約4分で読めます。

PHPベースのオープンソースのウィキソフトウェア DokuWikiのグローバル変数と定数について解説します。

DokuWiki内で定義されているグローバル変数と定数は、テンプレートカスタマイズやプラグイン開発を行う際によく使用します。

特に、動作モードやページ名・名前空間などのグローバル変数は条件分岐で多用しますので、覚えておきましょう。

なお、今回のバージョンは以下の通りです。

  • DokuWiki 2018-04-22a “Greebo”

DokuWikiのグローバル変数

まずはグローバル変数からです。

$ACT(動作モード)

DokuWikiは、パラメータ「?do=」で与えられた動作モードによって異なる動作をします。
例えば、「?do=show」でページ(文書)を行います。

$ACTは、その動作モードを保持する変数です。

主な動作モードは以下です。

分類動作モード概要
ページ編集show文書の表示
ページ編集edit文書の編集/ソースの表示
ページ編集previewプレビュー
ページ編集save保存
ページ機能backlinkバックリンク
ページ機能revisions以前のリビジョン
ページ機能mediaメディアマネージャー
サイト機能indexサイトマップ
サイト機能recent最近の変更
サイト機能search検索

例えば、テンプレート内でページ(文書)の表示時のみ出力したい箇所があれば、以下のように動作モード「show(文書の表示)」で条件分岐させればOKです。

<?php
if($ACT == 'show') {
  //
}
?>

$conf(設定情報)

$confは、DokuWikiの設定情報を保持する配列変数です。

この中には、

  • 管理者メニュー ⇒ サイト設定

で入力した値が含まれます。

テンプレート・プラグインなどの設定情報もこちらに含まれます。

$ID(ページ名)

$IDは、ページ名を保持する変数です。

以下のような名前空間とページの構造の場合、page1がページ名となります。

ルート
  └ ns1
    └ page1    ns1:page1

$INFO(ページ情報など)

$INFOは、DokuWikiのページに関する情報などを保持する配列変数です。

主な要素は以下です。

配列要素概要
id$IDと同様
namespace現在のページの名前空間
isadminログインユーザーがスーパーユーザーかどうか
ismobileモバイル端末からの閲覧かどうか

管理者であるスーパーユーザーのみ表示させたい場合は、isadminで判定すればOKです。

また、モバイル端末かどうかを判定したい場合は、ismobileを使用します。

$_SERVER[‘REMOTE_USER’](ユーザーログインの有無)

こちらは、ユーザーがログインした場合にユーザー名を保持します。

この変数に値がセットされている場合は、登録されているユーザーということで判定できます。

JavaScriptのグローバル変数については、こちらの記事を参考にしてください。

DokuWikiの定数

次は定数について。

DOKU_*(システム情報)

DOKU_」で始まる定数は、DokuWikiの内部で使用するシステム情報を保持します。

主なものは以下です。

定数概要
DOKU_BASEURLベース
DOKU_RELURLベースパス
DOKU_URL絶対URL
DOKU_INCサーバー上のインクルードパス
DOKU_CONFconfディレクトリのサーバー上のパス
DOKU_TPL現在使用しているテンプレートのURLベースパス
DOKU_TPLINC現在使用しているテンプレートのサーバー上のパス
DOKU_PLUGINプラグインのサーバー上のパス

最後に

今回は、DokuWikiのグローバル変数と定数について解説しました。

DokuWikiの定義済みグローバル変数と定数は、テンプレートカスタマイズやプラグイン開発を行う際に使用します。
特に、条件分岐でよく使用する動作モードやページ名・名前空間などのグローバル変数は覚えておきましょう。

DokuWikiの使い方については、こちらの記事にまとめています。

DokuWiki
\よかったらシェアしてね/
えふめん

大阪在住、30代。
業務系SE・社内SEの仕事を通じて学んだこと、PCトラブルで困って調べたこと、手作業を効率化して改善したこと、WordPressのブログ運営などの記事を書いています。

えふめんをフォローする
この記事が気に入ったら
いいね!しよう
最新情報をお届けします。
俺の開発研究所

コメント

タイトルとURLをコピーしました