一度運用にはいったモジュールセットを後から修正すると、すでに制作した過去のコンテンツのHTMLにも変更を波及でき、HTML構造の保全に便利です。しかしその反面、誤った変更を行うと、既存コンテンツを壊してしまう可能性もあることになります。
ここでは、モジュールの変更にかかる影響範囲や、安全にメンテナンスするための注意事項について説明します。
Broccoliが出力したデータは、生成されたHTMLとして保存され、ロードされています。 モジュールを変更しても、このHTMLを再生成するまで変更は反映されません。
HTMLを再生成するには、再生成したいコンテンツを編集し直します。または、ハンバーガーメニューから 「ツール」 > 「GUI編集コンテンツを一括再構成」 の順に選択し、サイト全体のコンテンツを一括して再生成することができます。
つまり、コンテンツ再生成の操作をしなければ、モジュールを更新しても既存コンテンツに影響はなく、以降に制作するコンテンツにのみ新しいモジュールが適用されることになります。
それでよい場合もありますが、古いコンテンツのモジュールが更新されないということは、サイト内に複数のモジュールの仕様(バージョン)が混在することになり、CSSなどの制御が次第に困難となり、メンテナンス性が損なわれます。 モジュールは常に最新の状態ですべてのコンテンツと整合するように管理されるのが理想的です。
新しいモジュールを追加するにあたっては、既存コンテンツへの影響はありません。
既存のコンテンツに対する影響はありませんが、未入力の状態でどう表示されるべきか、については考慮しておく必要があります。
変更する際に特に気をつけることは、 フィールド名 name
の値です。
Broccoliは、コンテンツデータを name
によって関連付けて処理しているため、 name
値を変更すると既存のデータのリンクが失われてしまいます。
表示名を変えたい場合は、 name
ではなく label
を使用してください。
どうしても name
を変更する必要がある場合は、既存コンテンツの更新が必要です。
フィールドを削除した場合、既存のコンテンツにすでに入力されたデータは参照されなくなります。
再編集しても既存の入力データは削除されることなく維持されます。
モジュールは、パッケージ、カテゴリの階層構造で分類されます。モジュールは、階層構造を元に モジュールIDを得ます。
例えば、 パッケージID packageA
、 カテゴリID categoryB
に格納されたモジュール moduleC
のモジュールIDは、 packageA:categoryB/moduleC
と命名されます。
モジュールの分類を変更すると、この モジュールID が変わるため、これに対応する必要があります。
既存のコンテンツで利用されている場合、 インスタンスの modId
の値を更新する必要があります。
または、 モジュールの info.json
に id
を設定することで、 パッケージやカテゴリに関わらず指定したIDとして振る舞うようになります。変更前のIDを明示することで不整合を防ぐことができます。
{
"id": "packageA:categoryB/moduleC"
}
使わなくなったモジュールを削除すると、既存のコンテンツで使われていた場合に不整合が生じます。既存のコンテンツで使われていないことを確認してから削除してください。
または、 info.json
で、 depricated: true
を設定すると、既存コンテンツを壊すことなく、モジュールパレットから隠すことができます。
{
"deprecated": true
}
モジュールの仕様を変更するにあたり、既存コンテンツのデータ構造にも変更を要する場合には、サイト全体のコンテンツに一括して高度な加工処理を施すことができます。
ハンバーガーメニューの「ツール」>「コンテンツを一括加工」を選択してください。
既存コンテンツの中で特定のモジュールが使用されているかを検索する用途にも活用できます。
クリップモジュールやクリップJSONの構造にも、既存コンテンツと同様の配慮が必要です。
コンテンツIDの変更や、フィールド仕様の変更などについて、既存コンテンツと同様に加工処理が必要になります。