HTMLImporterプラグインは、URLを指定してHTMLからデータを移行する機能を提供します。 本文推定機能により、HTMLからコンテンツ部分(ナビゲーションやヘッダ・フッタ部を除く)を自動抽出してデータを移行するため、移行元のサイトがどのCMSで運用されているかを問わずにデータ移行できます。 metaタグのデータのインポート、ページに含まれている画像やダウンロード対象のリンクファイルをあわせてインポートできます。 また、URL指定ではなく、ローカルにHTMLや画像ファイルなどをZIPアーカイブ化してアップロードしてインポートする機能も提供します。
利用にあたっては、DataMigratorプラグインが有効である必要があります。
※ 記事・ページのほか、モデルの設定画面で「インポート&エクスポート」が選択されているモデルが選択できます。インポート権限と、対象モデルに対する新規作成の権限が必要です。
「ZIPファイル」「URL」のいずれかを選択します。
「ZIPファイル」を選択した場合、ファイルをアップロード、「URL」を選択した場合はテキストエリアに1行1URL形式でURLのリストを入力して「送信する」をクリックします。
URLを指定してインポートする時、URLに対してBasic認証が設定されている時、IDとパスワードを入力します。
処理開始前に削除したい要素を正規表現、XPathまたはCSSセレクタで1行1設定指定できます。 ヒント設定=カラム名とすることでカラムに値をセットすることができます。 削除はHTML取得直後に行われます(HTML構造が変わることがあります)。
処理開始前に置換する箇所を正規表現、XPathまたはCSSセレクターと置換パターンまたは文字列の CSV形式で記述します。
タイトル要素 : HTMLの title要素を取り込みます。この時、セパレータを指定できます。
タイトルが「PowerCMS X Ver. 1.020リリースノート | PowerCMS X」の時、セパレータに「 | 」を指定すると、「PowerCMS X Ver. 1.020リリースノート」がタイトルとなります。
/<h1[^>]*>\s*(.*?)\s*<\/h1\s*>/
h1タグ内を指定するときは、以下のように指定します。
//*/h1
<h1 class="contentTitle">タイトル</h1>を指定するには以下のようにします。
h1.contentTitle
※ マッチしなかった場合は title要素が利用されます。
「自動抽出」「開始点と終了点を指定」「正規表現」「XPath」「CSSセレクタ」から選択します。
<div class="page-body">,</div>
取り込みたい部分を正規表現で指定します。抽出する範囲を括弧 (( ... )
) でキャプチャしてください。
/<div class="page-body">\s*(.*?)\s*<\/div>/s
XPathを指定します。以下の例では class="page-body"指定のある div要素の中身を取り込みます。
//div[contains(@class, 'page-body')]
div.page-body
正規表現や開始点・終了点の指定と異なり、XPath / CSSセレクタを指定した場合は、該当する要素が複数存在する場合に以下の値をマージして取り込みます。
excerpt=<meta name="description"content=",">
keywords=!<meta name="keywords" content="(.*?)">!
published_on=//*[contains(@class, 'date')]
subtitle=#subtitle
field.content=//*[contains(@class, 'content')]
※ 日付型のカラムについては書式の調整を自動的に試みます。
meta property="og:image"要素、a要素または img要素をXPathで指定することで、リンク先のファイルのデータをバイナリ型のカラムに取り込むことができます。 ※ 環境変数 denied_exts に指定のある拡張子のファイルは取り込まれません。
og_image=//meta[contains(@property, 'og:image')]
記事/ページ/ウィジェットなどの、リッチテキスト欄があり、text_formatカラムのあるモデルで選択できます。
※ 環境変数 denied_exts に指定のある拡張子のファイルは取り込まれません。
必要に応じてプラグインなどで識別するための名前を入力します。入力した値は「$app->param('html_identifier')」で取得できます。
モデルごとに取り込み設定を保存できます。保存された設定はインポート画面下部のドロップダウンメニューから選択できます。
デフォルトでは、設定はモデルごとに保存されます。以下の環境変数の指定でスコープやユーザーごとに設定を保存することができます。
YAML形式のファイルにエクスポートできます。
各入力欄には MTタグを指定可能です。変数「url」に取り込み中のURL、変数「html」に取得したHTMLデータがセットされていますので、特定のURLの場合のみ設定を分岐するなどの設定が可能です。
該当のモデルに対する post_importコールバックに対応するプラグインを書くことで、インポート後のオブジェクトに対する後処理を追加できます。 第一引数 $cb からインポートタイプ、URLや HTMLソースなどを取得できます。
function post_import_entry ( $cb, $app, $obj, $original ) {
$format = isset( $cb['format'] ) ? $cb['format'] : '';
// html, movabletype, wordpress or noren.
if ( $format != 'html' ) {
return true;
}
$html = isset( $cb['data'] ) ? $cb['data'] : '';
// Do something.
return $obj->save();
}