PowerCMS™
2025年1月1日購入分よりライセンスの価格を改定いたします。
[ブログ] PowerCMS 6 でのアップデートまとめ を追加しました。
[よくあるご質問] システムログに「タスクを実行するために必要なロックを獲得できませんでした」というログが残っている を追加しました。
[よくあるご質問] 特定のシステムログに絞って確認できますか? を追加しました。

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