Blog

ブログ

a-blog cmsの、強力なインポート機能を使いこなそう(2)

a-blog cmsのインポート機能についてのまとめです。二回目は「コンフィグの編集設定のインポート」についてです。

複雑だけど重要な「編集設定」

「コンフィグ」内の「編集設定」のページには多くの設定項目があります。
ここはエントリーのユニット機能に密接しているので、そのサイト独自の装飾に対応させたり、CSSフレームワークをacms.css以外にしたい場合は、必ず修正することになります。

インポート機能を使って、使い回しや省力化を図りたいところですが、前回の記事で紹介したページ単位のインポートだと、「編集設定」全体が書き換わってしまいます。

ユニット追加・ユニットグループ・テキストタグ…など、「編集設定」内のセクションごとにYAMLを分割できれば、カスタマイズもしやすいし、案件ごとの融通が利きます。

編集設定のYAMLファイル

いきなり例を挙げてしまうと、編集設定の「ユニットグループ」セクションだけを書き換えるYAMLの書き方は、以下の通りです。

---
@nesting_unit_group: 
  - unit_group_class
  - unit_group_label
unit_group_class: 
  - 
  - acms-column-clear
  - acms-col-sm-6
  - acms-col-sm-8
  - acms-col-sm-4
  - acms-col-sm-9
  - acms-col-sm-3
unit_group_label: 
  - ---
  - 1カラム
  - 1/2カラム
  - 2/3カラム
  - 1/3カラム
  - 3/4カラム
  - 1/4カラム

セットになっている入力項目の構成を宣言している「@nesting_unit_group」と、その構成要素である「unit_group_class」「unit_group_label」というキーがあり、それぞれに値が定義されます。

「unit_group_class」と「unit_group_label」、それぞれの1番目、2番目、3番目…が対になっています。

キーを調べる方法

「@nesting_unit_group」などの必要なキーをどうやって調べるのかというと、「編集設定」のフォームのHTMLソースから読み取ることができます。

先述の「ユニットグループ」セクションのフォームタグを解析してみると、入力欄の「クラス」列のname属性には「unit_group_class」、「ラベル」列のname属性には「unit_group_label」が入っていることがわかります。
また、下の方を見ていくとname属性に「@nesting_unit_group」が入ったhidden要素があります。

a-blog cmsをかなり使っている人なら、「カスタムフィールドグループと同じ構造」だと気付くと思います。実は、a-blog cmsのカスタムフィールドと、管理ページの入力項目は同じ書き方なのです。

一旦、コンフィグ全体、もしくは編集設定のページのみをエクスポートしてから、name属性の値でYAMLファイル内を検索して抜き出していく方法をとると、より確実です。

応用

別の例を挙げてみます。こちらは「ユニット追加」セクションのYAMLです。

「ユニットのタイプ」と「ラベル」で構成されたグループとなっています。

---
@column_add_type_group: 
  - column_add_type
  - column_add_type_label
column_add_type: 
  - text
  - custom_btn
  - image
  - file
  - map
  - video
  - module
  - media
column_add_type_label: 
  - テキスト
  - ボタン
  - 画像
  - ファイル
  - 地図
  - YouTube
  - モジュール
  - メディア

こちらは「エントリーコード」セクションのYAMLです(こんな単純なデータをインポートすることはないと思いますが…)。

このセクションは、グループ化されているフィールドがないため、YAMLも単純な構造になっています。

---
entry_code_prefix: entry-
entry_code_extension: html
entry_code_title: off

編集設定の差分インポート

このように、変更したい項目のYAMLだけを記述することで、編集設定の差分インポートファイルを作成できます。

「ユニットグループ」の設定をbootstrap準拠に変更したYAMLファイルを作成し、コンフィグのインポートから読み込ませてみます。

下のスクリーンショットの通り、YAMLファイルに書かれた「ユニットグループ」セクションだけが変更され、YAMLファイルにはない他の項目は変更されません。

「コンフィグ」以外はどうすれば…?

さて、コンフィグについては自由に操作できるようになりましたが、「モジュールID」はどうでしょうか。

モジュールIDは、コンフィグに含まれていません。一応、ID個別のエクスポート・インポートが用意されていますが、範囲が小さすぎ、ブラウザからGUIで入力するの比べて、あまり便利になった気がしません。

次回は、モジュールID・カテゴリーなど、コンフィグ以外の設定を部分的にインポートする方法を紹介します。