Comcrete CMS エクスプレスデータベースに一括CSV入力

2025/04/26
Concrete CMSのエクスプレスデータベースには標準でCSV入力が無いのですね。そこでJOBに登録できる簡単なものを作ってみました。

PIXTAで販売中のイラストが1万点近くに達しました。さらなる販売促進のため、独自のイラスト紹介ページを作成することにしました。
公開方法を検討する中で、親しみのあるConcrete CMSを思い出しました。これまで使用したことはありませんが、簡易データベース「エクスプレスデータベース」という機能があることに気付きました。
エンティティと属性の作成を終え、CSVの一括登録を試みましたが、そのような項目は見当たりません。一括出力の機能はあるものの、登録の方法が存在しないようです。Googleで調べても、多くの人が同じ悩みを抱えているようで、明確な解決策は見つかりませんでした。
PHPのバージョンの関係で、Concrete CMSのバージョンが.8であることが影響しているのかもしれませんが、仕方がありません。ここは自分で作るしかないでしょう。

実際に作ってみる

Concrete CMSのエクスプレスデータベースにCSVファイルからデータを登録するPHPプログラムを作成するには、以下のような手順を踏むことになります。

1. CSVファイルの読み込み

PHPのfgetcsv()関数を使用して、CSVファイルのデータを一行ずつ読み込む。

2. Concrete CMSのエクスプレスエントリを作成

Concrete CMSのエクスプレスエントリを操作するために、Express::getEntryBuilder()を利用する。

3. データの登録

取得したCSVデータをエクスプレスオブジェクトのエントリとして保存。

大まかにこんな感じのイメージのPHPが想定されます。


createEntry();
        $entry->setField('column1', $data[0]);
        $entry->setField('column2', $data[1]);
        // 必要なフィールドを追加
        $entry->save();
    }
    fclose($handle);
}