コンテンツ用プラグインの仕組み

プラグイン | -

コンテンツ用プラグインは、記事やプロフィール情報をテンプレートデータに展開する際に呼ばれます。

コンテンツ用プラグイン登録register_content_moduleメソッドの「callback」で指定したサブルーチンが呼び出されます。

register_content_moduleメソッドで指定する「type」によって、コールバック関数の引数が変わります。

typeコールバック関数の引数
main
  1. $cms : sb::TemplateManagerインスタンス
  2. %var : 環境変数・記事情報変数など
entry
  1. $cms : sb::TemplateManagerインスタンス
  2. $entry : 対象となる記事情報
  3. %var : 環境変数・記事情報変数など
comment
  1. $cms : sb::TemplateManagerインスタンス
  2. $com : 対象となるコメント情報
  3. %var : 環境変数・記事情報変数など
trackback
  1. $cms : sb::TemplateManagerインスタンス
  2. $tb : 対象となるトラックバック情報
  3. %var : 環境変数・記事情報変数など
profile
  1. $cms : sb::TemplateManagerインスタンス
  2. $user : 対象となるユーザー情報
  3. %var : 環境変数・記事情報変数など

最初の引数は必ずsb::TemplateManagerインスタンスで、最後の引数(厳密には残りの引数)は環境設定・記事情報などをひとまとめにしたハッシュ(連想配列)になっています。

"type" => "main"以外のコールバック関数では、第二引数として対象となるデータオブジェクトのインスタンスが格納されます。

   sub _topmemo {
     my $cms = shift;
     my %var = @_;
     # 以下、処理内容
     return 1;
   }

"type" => "main"のコールバック関数では、register_content_moduleメソッドで指定する「field」と同名の独自ブロックを処理します。そのブロックの繰り返し数を返り値としてreturnする必要があります。

例えば、上述の例は「ちょっと一言」プラグインから引用していますが、「field」として「topmemo」が指定されています。返り値が1の場合、<!-- BEGIN topmemo -->〜<!-- END topmemo -->領域が1度だけ表示されます。返り値として、0を返すと、該当領域は非表示になります。

   sub content {
     my $cms = shift;
     my $entry = shift;
     my %var = @_;
     # 以下、処理内容
   }

"type" => "main"以外のコールバック関数では、返り値を指定する必要はありません。

"type" => "main"以外のコールバック関数では、第二引数として対象となるデータオブジェクトのインスタンスを受け取ります。このインスタンスの実体はsb::Data::Objectを継承したSerene Bachのデータオブジェクトです。

上記の例では、$entryという変数に記事データオブジェクトsb::Data::Entryのインスタンスが格納されます。例えば、$entry->subjというアクセサにより、記事タイトルを取得できます。

2007.05.30 Wednesday | comments (0) | trackbacks (1)

comments

comment form

trackbacks

trackback url
[SB メモ] Serene Bach 2.xxのプラグインで独自タグ置き換えの覚書き | 2013/05/04 10:50 PM
拙作プラグインのFeedBurnerプラグインで独自タグを置き換えていますが、その置き換え方を覚書きとして投稿します。一例として下記のコードをTagR...
AIZACK.NET