2009年03月02日
インポート機能をプラグインで拡張する
Power CMS Enterprise には既存のHTML文書をMTのエントリー(ブログ記事/ウェブページ)としてインポートする機能があります。
ページに貼り付けられている画像をMTのアイテムとして同時に取り込むこともできます。サイトリニューアル時に過去のコンテンツ資産をスムーズに移行したいケースで威力を発揮することでしょう。
インポートのルールについては、タイトルや本文等の各フィールドに登録するデータの開始点や終了点をカンマなどの区切り文字もしくは正規表現で指定するようになっています。
デフォルト設定では、既存のHTML文書を「ウェブページ」として作成し、folderを自動的に生成します(URLそのままにMTへ移行できます)。
実はこのインポート機能はプラグインによって拡張できるようになっていますので、カスタムフィールドへのデータのインポートやインポート後のデータの整形などを行うプラグインを作成することができます。インポート時に呼び出されるコールバックは以下の通りです。
コールバック | パラメタ | 解説 |
---|---|---|
cms_post_save.category cms_post_save.folder |
$cb, $app, $obj, $original | インポート時にフォルダ、カテゴリが保存された直後に実行されます。このコールバックは cms_post_save.page(entry)よりも前に実行されます。 |
cms_post_save.page cms_post_save.entry |
$cb, $app, $obj, $original | ウェブページ、ブログ記事が保存された直後に実行されます。 |
cms_post_import.entry cms_post_import.page |
$cb, $app, $entry, $path, $data | $entryにはインポート時に作成されたエントリー、$pathにはインポート元のファイルのフルパス、$dataにはインポートファイルのデータが丸ごと格納されて渡されます。このコールバックは、cms_post_save.page(entry)の直後に実行されます。 |
サンプルとして HTMLから本文を抽出する Perlモジュール HTML::ExtractContent を使ったプラグインをご用意しました(各エントリーインポート直後に実行され、エントリーの「本文」欄に抽出したテキストを指定します)。
古いコンテンツなどオリジナルのHTMLが奇麗でない場合や抽出パターンが複雑になりそうな構造のHTMLの場合など、HTML::ExtractContent モジュールにデータ抽出を任せてしまうのもひとつの方法ではないかと思います。
ご活用ください。
コメントを投稿する