CSVファイルをインポートしてエントリを一括更新しよう
ハンズオン「CSVファイルをインポートしてエントリを一括登録」では、CSVファイルを使った一括登録をしましたが、ここでは逆に、エントリのデータをCSVファイルにダウンロードする方法と、そのファイルを使った一括更新の方法を試してみましょう。
- CSVファイルでのダウンロードの準備
- CSVファイルを使ったエントリの一括更新
ダウンロードモジュール | モジュール | ドキュメント | a-blog cms 制作者向け情報
CSVファイルでのダウンロードには、ダウンロードモジュールを使用します。
ダウンロードモジュールとは、任意のファイルをダウンロードできるようにするモジュールです。a-blog cmsのデータベースに格納されているデータを取り出して任意の形式のファイルに出力し、そのファイルをダウンロードできるようにします。
出力するファイルは、CSVやXML形式など任意の形式で作成でき、モジュールやグローバル変数などを記述してカスタマイズが可能です。
ダウンロードさせたいファイルのテンプレートを作成します。CSVやXMLなど任意のテキスト形式のテンプレートファイルを作成できます。テンプレートですので、モジュールやグローバル変数を記述できます。
今回は例として、ハンズオン「CSVファイルをインポートしてエントリを一括登録しよう」で作成した「会員紹介」のエントリデータをCSVファイルでダウンロードできるようにしてみましょう。
ダウンロードされるCSVファイルのテンプレートとして以下のようなファイルを作成します。これは、Entry_Bodyモジュールを使用して、会員紹介のエントリをCSV形式のファイルに出力する場合の例です。
※ここではEntry_Bodyモジュールを使用していますが、標準の出力件数や条件など変更が必要な場合はモジュールIDを作成して使用しましょう。
entry_title,entry_id,kana,email,sex,age,birthday,marriage,pref,phone,carrier,curry <!-- BEGIN_MODULE Entry_Body id="membersCSV" --><!-- BEGIN entry:loop -->"{title}[escquot]","{entry:loop.eid}","{kana}[escquot]","{email}[escquot]","{sex}[escquot]","{age}[escquot]","{birthday}[escquot]","{marriage}[escquot]","{pref}[escquot]","{phone}[escquot]","{carrier}[escquot]","{curry}[escquot]" <!-- END entry:loop --><!-- END_MODULE Entry_Body -->
CSV形式では、ダブルクォーテーションで囲まれた中にダブルクォーテーションが含まれている時のために、ダブルクォーテーションをエスケープする校正オプション[escquot]を指定しています。(CSVの仕様につきましては、他のWebサイトを参照してください。)
ここではEntry_Bodyモジュールを使用して出力していますが、モジュールIDを作成して指定することで、件数やデータの表示順を指定できます。
上記のソースを記述したら、ファイル名を「download.csv」として保存します。ここでは例として「csv」というディレクトリをテーマディレクトリ内に作成し、/themes/simple2016/csv/download.csv とします。
次に、ファイルをダウンロードするためのフォームボタンを作成します。テンプレートの任意の場所にフォームボタンを設置できます。手順1で作成したCSVファイルをダウンロードする場合は、以下のようなソースを記述します。
<form action="会員リスト.csv" method="post"> <input type="hidden" name="bid" value="1" /> <input type="hidden" name="cid" value="6" /> <input type="hidden" name="tpl" value="csv/download.csv" /> <input type="hidden" name="charset" value="Shift_JIS" /> <input type="submit" name="ACMS_POST_Download" value="会員紹介をCSVファイルでダウンロード" /> </form>
※ここではsimple2016にカテゴリID6で「会員紹介」が作られている前提で記述しています。
今回は、ログイン後の画面上部に表示される管理ボックス内にボタンを表示させるため、 /themes/system/admin/action.html を /themes/simple2016/admin/action.html として複製し、ここに追記しましょう。
このモジュールでCSVファイルをダウンロードした結果が、以下の内容になります。
entry_title,entry_id,kana,email,sex,age,birthday,marriage,pref,phone,carrier,curry "有田 季衣","211","ありた きえ","arita_toshie@example.com","女","41","1974/9/6","既婚","北海道","080-8766-3232","ドコモ","左ルー・ナン派" "川島 敏和","208","かわしま としかず","kawashima_toshikazu@example.com","男","57","1958/5/30","既婚","栃木県","080-9837-4008","ドコモ","右ルー・ルー攻め派" "長友 希","180","ながとも き","nagatomo_nozomi@example.com","女","35","1980/8/29","既婚","岡山県","080-2317-6705","au","右ルー・別口派" "板倉 ヒロ","169","いたくら ひろ","itakura_hiro@example.com","男","61","1955/4/29","既婚","奈良県","080-7126- 566","ソフトバンク","ぶっかけ・混ぜ混ぜ派" "川畑 和之","132","かわはた かずゆき","kawahata_kazuyuki@example.com","男","56","1960/1/11","既婚","三重県","080-8816-8138","ドコモ","ぶっかけ・せき止め派" (情報多数のため以下省略)
今回ダウンロードしたCSVファイルのデータには「entry_id」の項目が含まれていますので、データを編集後、本ハンズオンの「CSVファイルによるエントリの追加」の手順でCSVファイルをインポートすることで、新規エントリの追加ではなく、既存エントリ(同じ「entry_id」のエントリ)の更新となります。
このような方法により、複数のエントリを少ない手数で一括更新できます。