KnowledgeTreeプラグイン作成2
引き続きボチボチやってる。
プラグイン作成とかで難しいのは、そのプラットフォームの仕組みを理解する事。いったん仕組みが分かっちゃえば後は普通のプログラミング。KnowledgeTree (KT)の場合はPHP。
今回はプラグインに関連するテーブルの簡単な解説。
1つめはpluginsテーブル。プラグイン一覧できるテーブル。主なフィールドは以下の通り。
- namespace
- 前回の例で行くと、DocumentDiffPluginクラス内、$oPluginRegistry->registerPluginの第2引数
- path
- pluginの実体のPHPファイル。$oPluginRegistry->registerPluginの第3引数
- friendly_name
- DocumentDiffPlugin参照
このテーブル内のレコードははpluginsディレクトリ内にあるファイルから自動される
2つめはplugin_helperテーブル。プラグインの動作などを規定するっぽい。主なフィールドは以下の通り(順番は前後する)。
- classtype
- プラグインの種別。今回作成してるのはaction
- namespace
- 前回の例で行くと、DocumentDiffActionクラスのnamespaceが入る(kz.documentdiff.plugin.document.diff)
- plugin
- 今回の例で言うと、actionを登録したpluginのnamespaceであるkz.documentdiff.plugin
- classname
- クラス名。DocumentDiffAction
- path
- 今回の場合、actionが定義されているPHPファイル。plugins/docdiff/DocumentDiffAction.php
- object
- 他のフィールドの値を「|」でつないだだけもの? documentaction|DocumentDiffAction|kz.documentdiff.plugin.document.diff|plugins/docdiff/DocumentDiffAction.php|kz.documentdiff.pluginという値が入っていた。
これらのテーブルの値は、プラグインの管理画面の「Reread plugins」と「Update」を押した時に追加・更新されると思うけど、一度登録されたプラグインのnamespaceなどはプラグインの無効化・有効化とかしても変更されないので、pluginが画面に現れない、呼び出されないと言った時にはこれらのテーブルの値を確認すべき。
自分はこれで結構ハマった…No such action exists in KnowledgeTreeとか出た時があったけど、最終的にはDBのデータを直接修正した。