コンテンツ用プラグイン

プラグイン | -

コンテンツ用プラグインは、既存の独自ブロック・独自タグの動作を変更したり、新しく独自ブロック・独自タグを追加するプラグインです。

Serene Bachでは既存の独自ブロックを置き換えるプラグインを有効にすると、基本的に標準動作の代わりにプラグインが動作するようになります。

もし既存の独自ブロック内部に追加する形で動作させたいなどの場合は、プラグイン側で明示的に標準動作をハンドリングしているサブルーチンを呼び出す必要があります。

コンテンツ用プラグインとして機能させるためにはregister_pluginの後、register_content_moduleメソッドにより、管理用プラグインとして登録する必要があります。

sb::Plugin->register_content_module(
  'type'     => 'main',
  'callback' => &sb::Content::Memo::_topmemo,
  'field'    => 'topmemo',
  'name'     => undef,
);

register_content_moduleメソッドにはtype, callback, field, nameという4つの引数があります。

typeは必ず指定する必要があります。コンテンツ用プラグインが適用される種類を指定します。以下の5つからいずれかのtypeが指定されます。

  • main
  • entry
  • comment
  • trackback
  • profile

callbackは必ず指定する必要があります。コールバック関数のリファレンスを指定します。

上記例では、パッケージsb::Content::Memo内にある_topmemoというサブルーチンのリファレンスを指定しています。

typeによって適用されるコールバック関数の引数が変わります。

fieldでは指定したtype内におけるコンテンツ用プラグインの適用フィールドを指定します。fieldが未指定の場合、nameの値が利用されます。

fieldtypeが「main」の時と、「main」以外の時(entry, comment, trackback, profile)で意味合いが異なります。

typeが「main」の時は、処理する独自ブロック名を示します。

上記の例ではtopmemoという独自ブロックを追加するため、fieldに「topmemo」と指定されています。

標準で処理されている独自ブロックの処理を置き換える場合には、置き換える独自ブロック名を指定します。

type => mainで処理される標準独自ブロックは以下の通りです。

  • title
  • archives
  • category
  • link
  • recent_comment
  • recent_trackback
  • latest_entry
  • selected_entry
  • profile
  • calendar
  • amazon
  • page
  • option

typeが「main」以外の時(entry, comment, trackback, profile)では、特定の独自ブロックだけを処理します。

entry
entryブロックを処理します。以下のfieldが標準で定義されています。
  • date_time
  • authors
  • attach
  • category
  • body_text
  • discovery
  • sequel
  • others
comment
comment_area並びにcommentブロックを処理します。_contentというfieldが定義されています。
trackback
trackback_area並びにtrackbackブロックを処理します。_contentというfieldが定義されています。
profile
profile_areaブロックを処理します。_contentというfieldが定義されています。

また、typeによらず、「_main」という特殊なfieldが標準で定義されています。

コンテンツ用プラグインで「_main」フィールドの置き換えも可能ですが、その際には標準の処理サブルーチンを明示的に呼び出すことを強く推奨します。

nameはコンテンツ用プラグイン毎につけるユニークな名称を指定します。未指定(空もしくは未定義)の場合は、プラグイン名が利用されます。

ひとつのプラグインにつき、ひとつのコンテンツ用モジュールを登録するだけならnameを指定する必要はありません。ひとつのプラグインで複数のコンテンツ用モジュールを登録する場合、それぞれのモジュール毎にユニークな名称をつけます。

    2007.05.29 Tuesday | 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