コンテンツ用プラグインの仕組み
コンテンツ用プラグインは、記事やプロフィール情報をテンプレートデータに展開する際に呼ばれます。
コンテンツ用プラグイン登録
メソッドの「callback」で指定したサブルーチンが呼び出されます。register_content_module
メソッドで指定する「type」によって、コールバック関数の引数が変わります。register_content_module
type | コールバック関数の引数 |
---|---|
main |
|
entry |
|
comment |
|
trackback |
|
profile |
|
最初の引数は必ず
インスタンスで、最後の引数(厳密には残りの引数)は環境設定・記事情報などをひとまとめにしたハッシュ(連想配列)になっています。sb::TemplateManager
以外のコールバック関数では、第二引数として対象となるデータオブジェクトのインスタンスが格納されます。"type" => "main"
sub _topmemo {
my $cms = shift;
my %var = @_;
# 以下、処理内容
return 1;
}
のコールバック関数では、"type" => "main"
メソッドで指定する「field」と同名の独自ブロックを処理します。そのブロックの繰り返し数を返り値としてreturnする必要があります。register_content_module
例えば、上述の例は「ちょっと一言」プラグインから引用していますが、「field」として「topmemo」が指定されています。返り値が1の場合、<!-- BEGIN topmemo -->〜<!-- END topmemo -->領域が1度だけ表示されます。返り値として、0を返すと、該当領域は非表示になります。
sub content {
my $cms = shift;
my $entry = shift;
my %var = @_;
# 以下、処理内容
}
以外のコールバック関数では、返り値を指定する必要はありません。"type" => "main"
以外のコールバック関数では、第二引数として対象となるデータオブジェクトのインスタンスを受け取ります。このインスタンスの実体は"type" => "main"
を継承したSerene Bachのデータオブジェクトです。sb::Data::Object
上記の例では、
という変数に記事データオブジェクト$entry
のインスタンスが格納されます。例えば、sb::Data::Entry
というアクセサにより、記事タイトルを取得できます。$entry->subj
comments
comment form