Content Import
CSVファイルから任意のコンテンツタイプにコンテンツをインポートするシンプルなDrupalモジュール。様々なフィールドタイプに対応し、エンティティの自動作成機能を備えています。
contentimport
インストール
composer require 'drupal/contentimport:^10.0'
概要
Content Importは、CSVファイルからコンテンツの一括作成・更新を可能にするシンプルなモジュールです。使いやすい管理インターフェースを提供し、コンテンツタイプの選択、新規作成か既存コンテンツの更新かの選択、そしてインポート用CSVファイルのアップロードが可能です。
このモジュールは、画像、エンティティ参照(タクソノミーターム、ユーザー、ノード)、テキストフィールド、日時フィールド、真偽値フィールド、Geolocationフィールド、Geofield、リストフィールドなど、幅広いフィールドタイプに対応しています。主要な機能の一つとして、ボキャブラリー、タクソノミーターム、ユーザーがシステムに存在しない場合に自動作成する機能があり、インポートプロセスをシームレスにします。
インポート処理は進捗表示付きのバッチ操作として実行され、トラブルシューティング用の詳細なログがログファイルに記録されます。サンプルCSVファイル生成機能により、選択したコンテンツタイプに必要な形式を確認できます。
Features
- CSVファイルから任意のDrupalコンテンツタイプにコンテンツをインポート
- ノードIDに基づいて新規コンテンツの作成または既存コンテンツの更新が可能
- 事前にアップロードした画像からファイルエンティティを自動作成する画像フィールド対応
- ボキャブラリーとタームを自動作成するタクソノミータームのエンティティ参照処理
- 存在しない場合にユーザーアカウントを自動作成するユーザーのエンティティ参照処理
- タイトルによるコンテンツノードのエンティティ参照処理
- Full HTMLフォーマットでのテキストフィールド(text、text_long、text_with_summary)対応
- 柔軟な日付フォーマット解析による日付・タイムスタンプフィールド対応
- 複数の真値(On/Yes/on/yes)に対応した真偽値フィールドサポート
- 単一および複数の座標値に対応したGeolocationフィールドサポート
- WKTポイント生成による地理データのGeofield連携
- カンマ区切り値によるリスト(文字列)フィールド対応
- SEOフレンドリーなURLのためのURLパスエイリアス対応
- ユーザー名による作成者の割り当て
- 大規模インポート用の進捗インジケーター付きバッチ処理
- sites/default/files/contentimportlog.txtへのインポートログ出力
- 選択したコンテンツタイプとインポートモードに基づくサンプルCSVファイルの自動生成
- langcodeフィールドによる多言語対応
Use Cases
外部システムからの一括コンテンツ移行
外部CMSやデータベースからコンテンツをCSVとしてエクスポートし、カラムをDrupalのフィールドマシン名にマッピングし、指定フォルダに画像をアップロードして、すべてのコンテンツを一度のバッチ操作でインポートします。モジュールは必要に応じてタクソノミータームやユーザーアカウントを自動作成します。
スプレッドシートからの定期的なコンテンツ更新
スプレッドシート(Excel、Googleスプレッドシート)でコンテンツを管理し、CSVとしてエクスポートして、「既存コンテンツを更新」モードを使用してノードIDでノードを一括更新します。商品情報、イベント詳細、その他定期的に変更されるコンテンツの更新に便利です。
サイト初期コンテンツの投入
新しいDrupalサイトを構築する際、管理インターフェースからノードを1つずつ作成する代わりに、すべての初期コンテンツをCSV形式で準備し、一括インポートします。
多言語コンテンツのインポート
CSVのlangcodeカラムを指定することで、異なる言語のコンテンツをインポートします。各行に異なる言語コードを設定でき、翻訳コンテンツの一括作成が可能です。
タクソノミー重視のコンテンツインポート
複雑なタクソノミー構造を持つコンテンツをインポートします。モジュールは存在しないボキャブラリーとタームを自動作成するため、タクソノミー構造を事前に作成せずに新しいカテゴリ分けでコンテンツをインポートできます。
Tips
- コンテンツタイプを選択した後、必ずサンプルCSVをダウンロードして必要なフィールドマシン名を確認してください
- インポートの問題をデバッグするにはログファイル(sites/default/files/contentimportlog.txt)を使用してください - 各フィールドの詳細なステータスが表示されます
- 真偽値フィールドでは、真の値にOn/Yes/on/yesを、偽の値にOff/Noを使用してください
- GeolocationやGeofieldデータで複数のポイントをインポートする場合、座標ペアの区切りにセミコロン(;)を使用してください
- インポートはバッチプロセスとして実行されるため、大規模なインポートでもタイムアウトしません
- 既存のコンテンツノードを参照するには、コロン区切りのタイトルを使用してください:title1:title2:title3
- 作成者の割り当てには、ユーザー名の値を含む「author」カラムが必要です - ユーザーは既に存在している必要があります
Technical Details
Admin Pages 1
/admin/config/content/contentimport
CSVファイルをアップロードしてDrupalにコンテンツをインポートするためのメインインポートフォーム。ユーザーはコンテンツタイプとインポートモードを選択し、CSVファイルをアップロードします。フォームは選択したコンテンツタイプに必要なカラムヘッダーを示すサンプルCSVファイルを動的に生成します。
権限 1
Hooks 1
hook_preprocess_page
カスタムスタイリング用にモジュールのCSSライブラリをContent Import管理ページに添付します。
Troubleshooting 7
sites/default/files/ディレクトリにWebサーバーユーザーの書き込み権限があることを確認してください。
インポート前にすべての画像をpublic://<content_type>/images/フォルダに事前アップロードしてください。IMCE moduleまたはFTPを使用してアップロードします。CSVにはフルパスではなくファイル名のみを含める必要があります。
CSVの最初の行に「title」と「langcode」カラムがあることを確認してください。これらは新規コンテンツ作成時に必須です。
「既存コンテンツを更新」モードを使用する場合、CSVのnodeid値がDrupalの実際の既存ノードに対応していることを確認してください。
複数のボキャブラリーをターゲットとするフィールドの場合、「vocabulary:term1,term2」の形式を使用してください。単一のボキャブラリーターゲットの場合、ボキャブラリー名を省略できます。
日時の値にはm/d/Y h:m:i形式を、日付のみの値にはm/d/y形式を使用してください。
CSVにメールアドレスを入力してください。モジュールはメールでユーザーを検索し、見つからない場合は新しいユーザーアカウントを作成します。
Security Notes 3
- このモジュールは「administer site configuration」権限を必要とし、信頼された管理者のみにアクセスを制限します
- インポート中に自動作成されたユーザーアカウントは即座に有効化されます - 信頼できないデータをインポートする場合は、インポートされたユーザーを確認してください
- CSVファイルの検証はファイル拡張子のみをチェックします - インポート前にCSVファイルが信頼できるソースからのものであることを確認してください