気づいたら、ここだった

考えているようで、考えなしに生きてるので、気づいたらこんなことになてってた私のブログ

a-blog cms のエントリーをcsvでアップデートすること

a-blog cms Advent Calendar 2015 - Adventarの20日目の記事です。初心者向けの記事になりますので、アップルップルの方やエバンジェリストの方、ヘビーユーザーの方は、軽く読み飛ばすどころか、絶対に読まないでください。仮に読もうという人がいるならば、最後坂本さんの記事とかを読んでいただければ結構です。(※出典:おかださんのブログ坂本さんのブログ

商品一覧ページとかを用意して、商品を表示するようなサイトをa-blog cmsで構築したとして、そのページの更新をいちいちブラウザからエントリーの編集で更新して管理していたら大変なときがあります。たくさん商品があると特にそう。気が遠くなりますね。

そもそもエクセルなんかで商品リストを管理していれば、それをそのままアップして、まとめて更新できたら、楽だろなーと。

そんな機能がa-blog cmsでは実現可能です。

でも、あまり通して説明を見かけないので、書いておきます。


まず、サンプルとしてこんなカスタムフィールドがあるページを想定します。

  • item_code 商品コード
  • item_color 色
  • item_size サイズ

CSVでエントリーを登録・更新する方法

実は登録・更新するのは簡単で、インポートの方法というところで公式サイトにも書いてあります。

データ管理 | ドキュメント | a-blog cms 制作者向け情報

よく使う項目としては、エントリーに必須の項目やエントリーの( URLの最後に必要な)ファイル名にあたるエントリーコードがあります。

entry_title
entry_code

これに加えて、すでにある記事を「更新」したい場合はエントリーIDを入れておく必要があります。

entry_id

エントリーIDが指定されていると、そのエントリーIDの記事が更新されます。指定が無い場合は新規で作成されます。
他にも更新日時やステータス(公開や下書きのような状態)も設定できますが、今回は割愛。

結果的にこのようなCSVデータで登録・更新できることになります。

entry_id,entry_title,entry_code,item_code,item_color,item_size
10,a-blog cms Tシャツ,t001.html,T-001,青,LL
11,るっぷる Tシャツ,t002.html,T-002,赤,L
,a-blog cms カレンダー,cal-2016a.html,CAL-2016A,赤,L

CSVで出力する方法

上記のような登録・更新方法はでていますが、更新する場合は出力(登録済みのデータを表示・ダウンロード)する方法も必要です。
ここはあまり見かけないのですけど、これはHTMLのテンプレートを書くのと同じ要領でcsv形式を書けばいいだけなので簡単です。

ただ、商品の一覧など、カテゴリや特定の検索結果をもとに一覧を出す必要があると思いますので、モジュールIDを指定して必要なエントリーが正しく抽出されるように設定が必要です。(下の例では all_list というモジュールIDを指定、設定しています)

結果的にはこのようなテンプレートで作成できます。

entry_id,entry_code,entry_title,item_code,item_color,item_size<!-- BEGIN_MODULE Entry_Body id="all_list" --><!-- BEGIN entry:loop -->
{entry:loop.eid},"{entry:loop.ecd}","{title}","{item_code}","{item_color}","{item_size}"<!-- END entry:loop --><!-- END_MODULE Entry_Body -->

普段あまり使わないと思いますが、Entry_Bodyモジュールの中でエントリーIDやエントリーコードを表示する場合の書き方も確認しておいてください。

気をつけないといけないのは、データにカンマや改行が含まれる場合にCSVでは困る場合があるので、ダブルクォーテーションでそれぞれ括っておくことでしょうか。

あと、HTMLと違って「改行」が一つのデータのレコードを表すので、重要になります。テンプレートを書く時点ではちょっと分かりにくくなると思いますが、いろいろ試してみて問題無いように確認してください。

これでCSVの出力が得られるので、これをエクセルなどで編集して、またCSVで保存、更新という作業サイクルが構築できます。

注意点

まとめて更新できるしくみは便利な反面、ちょっとしたミスでデータを消失してしまう可能性をはらんでいます。

更新作業前のバックアップや、テスト機での動作確認など、データを守るための作業は欠かさずに行うようにしてください。

以上。みなさま、良い年末を。