Article Index
Joomlaのプラグインは、Joomlaが動いていくなかで様々なイベントで呼ばれます。今回はそのイベントを少し書いてみます。中には、プラグインとして実装されていないものもあるので、ソースを見ない限りわからないものもあったりします。
Contentプラグイン
昨日作成したexampleプラグインを見ればわかりやすいです。![]()
- onPrepareContent
このイベントは、名前の通り記事を表示するとき一番最初に呼ばれています。昨日作成したexampleプラグインのように記事表示前にその表示する記事に対して何かを追加したり、変更したりすることができます。
このイベントでは、返り値は出力(表示)されません。 - onAfterDisplayTitle
このイベントで表示されるのは、返り値を名前の通りタイトルの後に出力します。 - onBeforeDisplayContent
返り値を上のAfterDisplayTitleの後に出力します。 - onAfterDisplayContent
返り値を記事が出力された後に出力します。 - onBeforeContentSave
記事を保存時、データベースに保存する直前にその記事に対して何かを行ったり、その記事の内容で特定の処理を行いたいときに使います。エラーを返し保存できないようにすることもできます。 - onAfterContentSave
記事保存後に処理を行いたいときに使います。
Contactプラグイン
これは、Joomlaにはプラグインとして実装されていませんが、イベントは用意されています。
- onValidateContact
問い合わせの送信時の送信処理前に呼ばれます。その内容によってエラーを返し、送信できないようにすることができます。たとえば、Captchaなどを利用するときに使えます。 - onSubmitContact
このイベントは、上のonValidateContact直後に呼ばれますが、返り値は参照されません。
Authenticationプラグイン
ログイン認証時に使います。
- onAuthenticate
ログイン認証などの時に呼ばれます。exampleを見るとわかりやすいです。
Editorプラグイン
エディタの表示時や内容の保存時他に呼ばれます。あまり使わないかとも思う(新たにプラグインとして作成しない)ので、単純にリスト。拙作EditorSwitcherでも使っています。
- onInit
- onGetContent
- onSetContent
- onSave
- onDisplay
- onGetInsertMethod
Editor-xtdプラグイン
エディタを表示したときイメージボタンや、改ページボタンなどが表示されますが、そういったエディタ関連の機能に何かを追加したいときなどに使います。
- onDisplay
Systemプラグイン
システムの動きに合わせてイベントが用意されています。
- onAfterInitialise
Joomlaが初期化された時に呼ばれます。 - onAfterRoute
URIなどの処理が終わったときかな・・。 - onAfterDispatch
コンポーネントなどの処理が終わった後だったかな。 - onAfterRender
全部出力された後です。
Userプラグイン
アカウントを保存、新規作成、削除、ログイン、ログアウト時に呼ばれます。このUserプラグインもexampleが用意されているので前回作成したContent - exampleプラグイン同様少しの変更で試すことができます。
- onBeforeStoreUser
- onAfterStoreUser
- onBeforeDeleteUser
- onAfterDeleteUser
- onLoginUser
- onLogoutUser
Xmlrpcプラグイン
拙作MovableType XML-RPCや、JContentPlus XML-RPCで使っています。XML-RPCを使ったウェブサービスなどに使えます。
- onGetWebServices
以上、簡単な説明で一覧にしてみましたが、Joomlaでは様々なイベントが用意されていて、大きなコンポーネント級のエクステンションを作成せずとも、うまくイベントを組み合わせていけば、簡単なプラグインでかなりの事が行えると思います。また、Joomlaは、独自のイベント実装も簡単でエクステンション自身を拡張せずともその独自のエクステンションでプラグインを呼ぶ事で、拡張していくことが可能です。たとえば、JContentPlusやJboardでは独自のイベントによる拡張でAvatarを表示したりサムネイルを表示したりしています。
大変便利なJoomlaフレームワークをもっと活用すれば、ロスなく有用なアプリケーションが短期間で作成できるのではないかと思います。









