a-blog cms 勉強会 in 北九州 2020/01 を開催してきました
2020年1月24日(金) に 北九州市の MIKAGE1881 で a-blog cms 勉強会 in 北九州 2020/01 を ましじめ の田村さん サムライデザイン 小佐々さん 株式会社ビットライズ 隅田さん の協力により開催しました。
2020年1月24日(金) に 北九州市の MIKAGE1881 で a-blog cms 勉強会 in 北九州 2020/01 を ましじめ の田村さん サムライデザイン 小佐々さん 株式会社ビットライズ 隅田さん の協力により開催しました。
今年の勉強会は少なくて3人から多くて50人まで、名古屋は毎月・大阪は隔月、新潟は2回、それ以外は1回づつ開催しました。延参加者数は282人で24回開催と多くの方々と a-blog cms を勉強した1年でした。
これは参加というよりは主催なんだけど...
2019年の a-blog cms の勉強会は全て終了しました。今年を振り返りつつ、来年のことも考えていきたいと思います。
来年は、もっと多くの人にお会いできればと思っております。
名古屋での毎月開催や大阪での隔月開催も続けます。また、他の地区でも東京などでも隔月開催したいですし、2019年は西日本に伺えなかったのを反省し各地をまわります。
まだやったことがない地域で、勉強会に来て欲しいというところがあれば、積極的に行きます。 そうやって行ったところでは芽が出て利用者やパートナーさんが誕生しています。なので、人数少なくても声をかけてください。
2019年は無かったイベントへの登壇。どこかでお話しさせてください! 無料で行くし、協賛もご協力します。
a-blog cms Advent Calendar 2019 については 12/1 トップバッターで書きましたが、書く人の募集が遅くなってしまったことから 2回目書かないと埋まらない事に。
今回は、少し前の案件で a-blog cms の標準のCSVインポート機能 に助けられたことを紹介してみようと思います。
「a-blog cms CSV インポート」のキーワードで Google を使って検索すると以下のような情報がヒットします。Microsoft Excel や Apple Numbers 、Google スプレッドシートなどを利用して1行が1データになるように情報を管理し、それを取り込みすることを行うのが CSVインポートの基本だと思います。
a-blog cms では、エントリー(記事)とユーザーの情報の基本情報とカスタムフィールドを CSV形式で用意することで登録することができることがわかります。
CSVインポート機能と書かれていますが、追加( insert ) だけでなく、entry_id や user_id を CSVに含めることで、更新( update ) についてもサポートしています。
※ ユーザーのインポートについては、利用ユーザー数のライセンスが、無制限ユーザーの場合のみになります。
どのバージョンからインポートできるようになったのか分かってないのですが、この秋にドキュメントの CSVファイルからのインポート に entry_tag が追記されました。なので、a-blog cms 歴が長い人も知らない人が多いのではないでしょうか。
,aaa/bbb/ccc,
上記のように / を区切り文字で書くことで3つのタグ登録できます。
一般的な CSVインポート機能であれば、縦がデータ数、横が項目数になるようなデータであるのが一般的です。a-blog cms でカスタムフィールドグループというカタチで登録できる管理画面を作った場合 CSVインポートが難しいと思っていました。
でも、それは私が知らなかっただけで a-blog cms なら出来るのです!
例えば、以下のような管理画面を用意します。
AAA・BBB・CCC については 、普通に CSV形式にすることはできますね。
AAA | BBB | CCC |
---|---|---|
あああ | BBB-1 | CCC-1 |
いいい | BBB-1 | CCC-2 |
ううう | BBB-2 | CCC-3 |
より分かりやすくするために実際のソースコードも掲載しておきます。
<!-- BEGIN DDD:loop --> <tr class="sortable-item"> <td class="item-handle acms-admin-table-nowrap"> <i class="acms-admin-icon-sort"></i> </td> <td> <input type="text" name="EEE[]" value="{EEE}" class="acms-admin-form-width-full" /> </td> <td> <input type="text" name="FFF[]" value="{FFF}" class="acms-admin-form-width-full" /> </td> <td class="acms-admin-table-nowrap"> <input type="button" class="item-delete acms-admin-btn-admin acms-admin-btn-admin-danger" value="削除" /> </td> </tr> <!-- END DDD:loop -->
entry_title | AAA | BBB | CCC | @DDD[1] | @DDD[2] | EEE[1] | EEE[2] | EEE[3] | FFF[1] | FFF[2] | FFF[3] |
---|---|---|---|---|---|---|---|---|---|---|---|
サンプル1 | あああ | BBB-1 | CCC-1 | EEE | FFF | あああ | いいい | XXX | YYY | ||
サンプル2 | いいい | BBB-1 | CCC-2 | EEE | FFF | かかか | ききき | くくく | XXX | ZZZ | YYY |
サンプル3 | ううう | BBB-2 | CCC-3 | EEE | FFF | さささ | ZZZ |
1行目は読み込むデータの形式を指定します。@DDD[1], @DDD[2] については 、DDD:loop の部分になります。カスタムフィールドグループのループ名を1行目に書きます。そして、そのデータには全部の行に同じ入力項目名 EEE や FFF を記述する事になります。
また、EEE[1] , EEE[2] , EEE[3] などについては、最大の件数だけ連番の項目を設定し、件数が少ない場合には空で項目を用意しておきます。
今回は CSVインポートの事を書いていますがオマケで、カスタムフィールドグループの検索についても少し紹介しておきます。
/field/FFF/ZZZ
のような感じの文字列を URL の最後に追加すると、サンプル2・サンプル3 が検索される事になります。 このカスタムフィールドグループの項目検索についても、少し前まで検索対象になっている事を私が知りませんでした。私が知らないくらいなので、合わせてご紹介しておきます。
最近は、フロントエンドでいろいろやるので、JSON形式でデータが出力できれば OK な事って多くなってきていると思います。
上記の CSVインポートしたデータを JSON にすると以下のようになります。
{"entry": [ { "entry_title": "サンプル1", "AAA": "あああ", "BBB": "BBB-1", "CCC": "CCC-1", "DDD": [ { "EEE": "あああ", "FFF": "XXX" }, { "EEE": "いいい", "FFF": "YYY" } ] }, { "entry_title": "サンプル2", "AAA": "いいい", "BBB": "BBB-1", "CCC": "CCC-2", "DDD": [ { "EEE": "かかか", "FFF": "XXX" }, { "EEE": "ききき", "FFF": "ZZZ" }, { "EEE": "くくく", "FFF": "YYY" } ] }, { "entry_title": "サンプル3", "AAA": "ううう", "BBB": "BBB-2", "CCC": "CCC-3", "DDD": [ { "EEE": "さささ", "FFF": "ZZZ" } ] } ] }
a-blog cms のテンプレートで JSON を出力できるようにすると以下のようなテンプレートファイルを用意します。
<!-- BEGIN_MODULE Entry_Summary id="json_sample" -->\{"entry": [ <!-- BEGIN unit:loop --><!-- BEGIN entry:loop --> \{ "entry_title": "{title}", "AAA": "{AAA}", "BBB": "{BBB}", "CCC": "{CCC}", "DDD": [<!-- BEGIN DDD:loop --> <!-- BEGIN DDD:glue -->,<!-- END DDD:glue -->\{ "EEE": "{EEE}", "FFF": "{FFF}" \}<!-- END DDD:loop --> ] \}<!-- BEGIN glue -->,<!-- END glue --> <!-- END entry:loop --><!-- END unit:loop --> ] \} <!-- END_MODULE Entry_Summary -->
モジュールID の json_sample で条件を設定すれば必要なエントリーのみ抽出して JSON出力も可能になります。繰り返しの項目の区切り文字のカンマの表示制御部分に私自身も少し悩みました。というか DDD:glue という表記は初めて知りました。
こんなデータを入力する画面を作ろうと思った際には、他の CMS を使ってる人はどうしているんだろ? また、入力画面ができたとして、例えばお客様にCSV形式でデータ支給された際に取り込みのプログラムはプラグインとかでなんとかなるのかな? そこら辺を他の CMS を使ってる人には聞いてみたいと思います。お会いした際に、教えてもらえると嬉しいです。
1年くらい前からドローンを体験してみたいと思っておりましたので、Mavic mini が発表になった際にポチッとしてみました。
これから、どんなところで飛ばして OK で、どこで NG なのかを少し勉強のために調べてブログにまとめて行こうと思っております。
まずは、届いたことを報告しておきます。