ここでは、Gloverに様々な機能を追加することができる、プラグインの作成について紹介します。

Gloverのプラグイン作成の手引き

Gloverでは、プラグインは自作することが出来ます。
前提となる知識は、PHPが書けることだけです。プラグインはPHPで記述します。
仕様は、以下の通りとなります。

プラグインとして実行される関数

  • <プラグイン名>_InitPlugin()
  • <プラグイン名>_ActionPlugin()
  • <プラグイン名>_InlinePlugin()
  • <プラグイン名>_BlockPlugin()
  • <プラグイン名>_ToolPlugin()
  • <プラグイン名>_RegistNavigator()
いずれも、引数無しの関数です。
それぞれの関数の役割について解説します。

<プラグイン名>_InitPlugin

プラグインが実行される際、最初に実行される関数です。
プラグイン内で共通に使用されるグローバル変数を登録(後述)するのが主な役割になります。
無くても問題はありません

<プラグイン名>_ActionPlugin

URLにて、plugin=<プラグイン名>として呼ばれた時に実行される関数です。
フォームなどからリクエストを受け付ける時に使用されるパターンが多いです。

<プラグイン名>_InlinePlugin

記事のコンバート時に、インラインプラグイン構文の場所で実行される関数です。
この関数から使用できる送出データ(後述)は、REPLACEのみです。

<プラグイン名>_BlockPlugin

記事のコンバート時に、ブロックプラグイン構文の場所で実行される関数です。
この関数から使用できる送出データ(後述)は、REPLACEのみです。

<プラグイン名>_ToolPlugin

ツールプラグインとして使用されるプラグインに必要な関数となります。
ツールメニューからのリクエストは、この関数に渡されます。

<プラグイン名>_RegistNavigator

ナビゲーターにプラグインを登録する時に使用される関数です。
この関数が存在する場合、そのプラグインは自動的にナビゲーターに追加されます。
array("regist_name" => <プラグイン名>, "argv" => 初期に渡す引数文字列)
という配列を返さなければなりません。
argvは無くても登録されます。
ツールプラグインにこの関数が存在する場合、ツールメニューへの登録が優先され、ナビゲーターには登録されません。

プラグインで実行できるヘルパー関数群

  • getArgv
  • getArgc
  • getBlock
  • setSendData
  • setPluginGlobals
  • getInnerHeader
  • getNavigator
  • getInnerHooter
  • getPluginFormInfo
  • getToolInfo
  • getIniData
  • setIniData
  • reflectIniData
  • getHandle
  • closeHandle
  • getActionModuleName
  • getPluginPath

getArgv

プラグインに渡された引数を取得します。
ActionPlugin内で取得する時には、getArgv(引数名)で取得でき、InlinePlugin、BlockPlugin内では、 getArgv(プラグイン名_先頭からの通し番号)で取得できます。
取得できる引数は、stripcslashsがかけられています。

getArgc

プラグインに渡された引数の数を取得します。

getBlock

ブロックプラグインにおいて、getBlock("プラグイン名")で、{}ブロックの中身を単一の文字列として取得できます。
この文字列には一切のサニタイズはされません。

setSendData

プラグインからデータを送出する時に使います。
送出するデータは、次の種類が存在します。

  • CONTENT---スキンの$bodyメタと置換する
  • PAGE------ページ全体とする
  • REPLACE---Inline、Blockで、構文要素と置換する
  • META------プラグインでcssやJavaScriptなどを使用する時に使用する。
インラインプラグイン、ブロックプラグインではREPLACE以外選択することはできません。

setPluginGlobals

プラグインから使用できるグローバル変数を設定します。
設定する時は、引数にarray(キー名 => データ...)という形で設定します。
設定した変数は、_<プラグイン名>_キー名としてアクセスできます。

getInnerHeader

管理者メニューで使用するプラグインで使用します。