Loggix プラグインAPI
Loggixプラグインについて
Q1: Loggixプラグインって何?
A1: /plugins/ディレクトリに配置される、PHPファイルです。
これらのPHPは、Loggixで作成されたサイトに改変を加える事無く機能を追加する拡張モジュールとして機能します。実体は、単体または複数の普通のPHPファイルです。
Q2: プラグインはどこに入れればいいですか? また、どうやってシステムに適用させますか?
A2:/plugins/ディレクトリに入れます。
プラグインは/plugins/ディレクトリに入れると何もしなくてもすぐに適用されます。オフにする場合は取り除くだけでOKです。
【プラグインの配置例】
-
plugins-
markdown.php -
hilightKeyword.php -
showTrackbackStatus.php
-
Q3: 同じ場所に複数のプラグインを適用したいのですが、出来ますか?
A3: 出来ます。
但し、オリジナルメソッドを作る際、同じ名前でのメソッドの二重定義は出来ませんので注意してください。優先順位を入れ替えたい場合は、プライオリティの設定をします。プライオリティは1から10の数値で表し、数字が若い順にプライオリティが高くなります。例(↓)
1 2 | $app->plugin->addFilter('フック名', 'メソッド名', 1); |
Q4: Loggix Expanderで作成したモジュールにトップディレクトリの/plugins/に入れたプラグインは適用されますか?
A4: 適用されます。
全てのLoggix Expanderモジュールは下位ディレクトリにカスケード(継承)されます。リセットしたい場合はプラグイン内部でフィルターを使ってリセットします。
Q5: Loggix Expanderで作成したモジュールに独自のプラグインを使いたいのですが
A5: 以下の手順でやってみてください。
/modules/あなたの作ったExpanderモジュール/plugins/ディレクトリを作成し、そこにに入れると、他のモジュールに干渉しないあなたの作ったExpanderモジュール専用のプラグインとなります。
-
modules-
YourExpanderModule-
plugins-
yourPlugin.php
-
-
-
トップディレクトリの/plugins/に入れたプラグインと同じフックを使ったプラグインをExpanderモジュール/plugins/に入れると、上位のプラグインが継承されて二つとも適用されます。上位プラグインを無効にして上書き適用したい場合は、以下のメソッドを使います。
【 フィルターを無効にする場合 】:
1 2 | $app->plugin->removeFilter('this-is-a-hook', 'my-method-name'); |
【 アクションを無効にする場合 】:
1 2 | $app->plugin->removeAction('this-is-a-hook', 'my-method-name'); |
用語の解説
Q1:「アクション」って何?
A1: アプリケーションでなんらかのイベントが発生する際に実行される処理のことです。
アクションを追加する場合は、追加したい処理の部分に以下のようなメソッドを追加します。
1 2 | $app->plugin->doAction('this-is-a-hook', 'my-method-name'); |
Q2:「フィルター」って何?
A2: アプリケーションでなんらかの処理を行う際にそれを通過して適用(フィルター)されるようにする処理のことです。
フィルターを追加する場合は、追加したい処理の部分に以下のようなメソッドを追加します。
1 2 | $app->plugin->addFilter('this-is-a-hook', 'my-method-name'); |
Q3: 「フック」って何?
A3: プラグインを作る際に、アクションやフィルターを実行する部分を指定するキーワードです。
フックとは、メソッドを適用する部分を指定するキーワードの事です。
1 2 | $this->plugin->applyFilters('フック名', 'メソッド名'); |
このようなメソッドを使ったコードを使ったプラグインを書く事で、フックで指定された部分に処理を施す事が出来ます。
フック一覧
フィルター用フック一覧
| フック名 | 説明 |
|---|---|
| title |
<title>タグ内の値に適用されます。
|
| h1 |
<h1>タグ内の値に適用されます。
|
| index-view | インデックス(トップ)ページのコンテンツ部分全体に適用されます。 |
| downloads-index-view | Downloadsのインデックス(トップ)ページのコンテンツ部分全体に適用されます。 |
| permalink-view | 恒久URI(パーマリンク)ページのコンテンツ部分全体に適用されます。 |
| entry-content | 各エントリーごとのコンテンツ部分全体に適用されます。 |
| edit-entry | エントリーの編集画面のコンテンツ部分全体に適用されます。 |
| navigation | ナビゲーションブロック部分全体に適用されます。 |
| comment-post-form | コメント機能のコメントフォーム部分のブロック全体に適用されます。 |
| comment-text | コメント機能の訪問者の投稿したテキスト部分に適用されます。 |
| ex-content | Loggix_Expanderモジュールで作成されたページのコンテンツブロック部分全体に適用されます。 |
アクション用フック一覧
before-で始まるフックは、「〜の前」に呼び出されるフックを意味しています。after-で始まるフックは「〜の後」に呼び出されるフックです。
| フック名 | 説明 |
|---|---|
| after-new-entry-posted | エントリーが追加された直後に実行されます。 |
| before-delete-entry | エントリーが削除される直前に実行されます。 |
| after-entry-deleted | エントリーが削除された直後に実行されます。 |
| before-recieve-comment | コメントを受信する前に実行されます。 |
| before-recieve-trackback | トラックバックを受信する前に実行されます。 |
| after-send-trackback | トラックバックを送信した後に実行されます。 |
カスタマイズ
Q1: プラグインを適用させる領域を増やしたいのですが?
A1: フックをLoggixのコアライブラリにコードを追加して下さい。
プラグインを適用させる領域を増やすには、Loggixのコアライブラリのメソッド内部で、適用させたい領域の変数部分を以下のコードを使って書き換えて追加します。
1 2 | $this->plugin->applyFilters('フック名', 'ターゲットとなる領域'); |