concrete5 のレガシーバージョン用に開発したブロックタイプを、モダンバージョン(Version 8.x)で動くようにする方法の解説です。前回「concrete5レガシーバージョンのDesigner Content製ブロックをモダンバージョンのBlock Developer製ブロックに移行する」と言う記事で、アドオンを使ってブロックを開発していた場合の方法をご紹介しましたが、今回はアドオンを使わず、独自に開発していた場合になります。レガシーバージョンとは?などの用語の解説は、前回の記事に記載していますので、ご覧ください。
今回の解説にあたって、レガシー版のドキュメント「Creating a New Block Type」からダウンロードできるサンプルブロックを使います。このサンプルブロックをインストールすると、本記事のサムネイル画像のような1つの入力欄があるブロックタイプが利用できるようになります。このレガシー版のドキュメントもいつなくなるか分からないので、本記事からもダウンロードできるようにしておきます。
ブロックタイプファイルの設置場所の変更
レガシーバージョンでは /blocks または /packages/your_package_handle/blocks 内に格納されていましたが、モダンバージョンでは設置場所が変更になりました。パッケージ内は変更がありませんが、パッケージ外の設置場所が /application/blocks に変更になりました。
データベース定義ファイルの修正
正しい場所にファイルを設置できたら、まず、ブロックタイプのデータベース定義を行う db.xml を修正しましょう。レガシーバージョンでは、レガシーバージョンまでで使用していた ADODB ライブラリと互換性のある、AXLMS と言う形式の XML ファイルでデータベース構造を定義していました。
Creating and Working with db.xml Files :: Legacy Documentation
モダンバージョンでは、ADODB ライブラリの利用が廃止され、代わりに Doctrine が使われるようになりました。データベース定義ファイルも、独自開発された Doctrine と互換性のある Doctrine XML 形式で表現するように変わりました。
この形式の変更に合わせて書き換えが発生するのですが、ご心配なく。変換ツールが用意されています。
下記URLにアクセスし、「Convert from AXLMS」ボタンを押し、古いXMLをペーストすれば、自動的に Doctrine XML 形式の変換されます。
http://concrete5.github.io/doctrine-xml/
ダウンロードしたサンプルブロックの db.xml はこのようになっていますが、