concrete5 には Block Designer という、カスタムブロックを作ることが出来る最強ブロックがあります。
ただ、正規の方法では、作成済みの Block Designer ブロックの入力項目を変更しようと思うと、一度サイト上のブロックをすべて削除して、アンインストールしてから出ないと行えません。
ブロックをアンインストールせずに項目を追加できないか。ほっと危険なんですが、弊社が通常行っている、BD & BDP をアンインストールしないで変更をする手順を共有します。
無保証・無責任
本 TIPS は無保証・無責任です。MySQL テーブルを変更したりと、危険な技が含まれています。
実施する際は、事前バックアップや、テスト環境を利用するなどして、サイトが壊れてしまった場合でも復旧できるよう手配をしてください。
サイトバックアップや復旧の仕方がわからない方は、下記の方法で修正を絶対にしないでください。
項目を削除する方法
入力項目を内部的に削除はしません。
- form.php 上の項目をコメントアウトなどしてコード上で取り除く
- 必須項目の削除であれば controller.php の該当箇所や auto.js のバリデーション部分を削除
- view ファイルの該当項目表示部分を削除
既存のブロックは、MySQL のDatabase 上には削除されず残ります。新規ブロックは、データの格納テーブルは存在するものの殻のデータとして登録され続けます。
上記の方法が嫌な人は正攻法のみが可能です。
項目のハンドルやタイプを変更
もちろん、やろうとおもったらできますが、基本的にできないと考えてください。
上記の項目を削除 + 下記の項目を追加の手順を踏んでください。
既存のブロックのデータも再入力が必要です。
Block Finder などの有償アドオンを利用すると、既存の BD & BDP ブロックを見つけることが出来ます。
【ちょっと危険】既存の BD & BDP ブロックに項目を追加する方法
ただし、サイトのメンテナンス時間を最小限に抑えるため、 BD & BDP の項目追加のみであれば、下記のように行う
- ローカルや開発環境で BD & BDP ブロックを修正するためだけの concrete5 サイトを作る
- BD & BDP ブロックをローカル (or テスト環境) にアップ (ライセンス的に開発環境は1つまで追加でインストール可能)
- 作成した BD& BDP ブロックをテスト環境にインストール
- view 部分のファイルを他の場所にバックアップ
- ローカルの concrete5 環境で BD & BDP の管理ページに行き、既存ブロックとして選択、項目を追加
- BD & BDP 管理画面でブロック削除をした後、作成ボタンを押してブロックを生成。
- 他の場所に置いておいた view ファイルを元に戻す
- 追加された項目の出力を view に追加
- Git などを使ってどのファイルのどの部分が追加されたかを確認。追加部分が追加されただけで、なにも削除されていないことを確認。
- テスト環境でテスト反映
- ファイルをアップロード
- 管理画面 (Dashboard) - スタックとブロック (Stack & Blocks) - ブロックタイプ (Block Types) ページに訪問
- 該当するブロックを選択
- 「更新 (Refresh)」ボタンを押す
- 管理画面 (Dashboard) - システムと設定 (System and Settings) - サーバー設定一覧 (Environment) - データベースエンティティ (Database Entity) ページに訪問
- 画面左下の赤いボタン「エンティティを更新 (Refresh Entities)」をクリック
- BD & BDP ブロックに正常に項目が追加されているか動作確認
- 本番環境に反映
- ファイルをアップロード
- 管理画面 (Dashboard) - スタックとブロック (Stack & Blocks) - ブロックタイプ (Block Types) ページに訪問
- 該当するブロックを選択
- 「更新 (Refresh)」ボタンを押す
- 管理画面 (Dashboard) - システムと設定 (System and Settings) - サーバー設定一覧 (Environment) - データベースエンティティ (Database Entity) ページに訪問
- 画面左下の赤いボタン「エンティティを更新 (Refresh Entities)」をクリック
- BD & BDP ブロックに正常に項目が追加されているか動作確認
- 完了
以上で、Block Designer のブロックに新規項目を追加できます。
御覧頂いているように、手間がかかるので、数十個程度のブロックを設置しているだけであれば、正攻法で、ブロックを一旦削除して再設置するという方法を取ったほうが良いかもしれません。オススメは、すでにサイト上に数百個ものブロックを設置してしまったときなどです。
以上