PowerCMS™
[ブログ] PowerCMS 6 でのアップデートまとめ を追加しました。
[よくあるご質問] フォーム投稿の自動返信メールに連番の受付番号を付与することはできますか? を追加しました。
[ブログ] PowerCMS サポートの実績 (2022年10月) を追加しました。
[新着情報] 【オンライン】11月24日(木) ステークホルダーとの信頼関係を構築できるサイトづくりとは? ~サイトでのBCP対策から情報配信のコツを一挙公開~ を追加しました。

PowerCMS ブログ

ホーム > PowerCMS ブログ > 技術情報 > インポート機能をプラグインで拡張する

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 モジュールにデータ抽出を任せてしまうのもひとつの方法ではないかと思います。

ご活用ください。


カテゴリー
プラグイン
技術情報

Recent Entries