ディレクトリ構造とコンセプト

concrete5のブロックタイプシステムの最も優れている側面は、それが比較的シンプルなことです。全てのブロックタイプはそれ自身のディレクトリにまとめられており、その中身も非常に理解しやすいものになっています。基礎的な例として、ページ内のWYSIWYGエディタによってインタラクティブにリッチなテキストを編集できる、記事ブロックを確認してみましょう。このブロックは concrete/blocks/content ディレクトリにあります。

add.php

オプション。このファイルはブロックがページに配置された際に表示されます。記事ブロックの場合、ページ内で直接編集できるタイプのブロックですので、この add.php ファイルはページのDOM構造に注入されます。このファイルが存在しない場合は、そのブロックをページに追加しても、入力フォームは表示されずに、ダイレクトにページにブロックが配置されます。特にオプションを必要としないブロックの場合に便利です。

composer.php

オプション。このファイルは、ブロックがページタイプのコンポーザーフォームで使われる際の編集テンプレートとして使われます。

controller.php

必須。このファイルはブロックタイプ名やハンドルなど、ブロックタイプのコアプロパティを定義します。このファイルはブロックが表示される際に自動的に実行されるメソッドを含むこともできます。

db.xml

オプション。 このファイルはブロックのデータベーステーブルを表現したXMLファイルです。ブロックがデータベーステーブルを必要としない場合はこのファイルは不要です。このファイルの構造は AXMLS フォーマットに従います

edit.php

オプション。 このファイルはこのブロックを編集する際に表示されます。記事ブロックの場合、ページ内で直接編集できるタイプのブロックですので、このフォームはページのDOM構造に直接注入されます。このファイルが存在しない場合は、このブロックはCMSから編集はできません。

icon.png

必須。 この画像はサイトの編集者がサイドバーで見ることになるブロックタイプのアイコンです。このアイコンは正方形で、50x50ピクセル以上である必要があります。

scrapbook.php

オプション。 このファイルはクリップボードパネルにこのブロックが表示される際に使用されます。このファイルが存在しない場合は、通常のビューテンプレートが表示されます。このファイルは、viewファイルがクリップボードのコンテナと干渉する場合に便利です。

view.php

必須。 このファイルはページにブロックが表示される際に表示されます。

オーバーライド

concrete5の多くのものと同様、ブロックタイプのディレクトリ内のファイルはオーバーライド可能です。ブロックタイプのテンプレートファイルをオーバーライドするには:

  1. [管理画面 > システム&設定 > 最適化 > キャッシュとスピード設定]からオーバーライドキャッシュを無効にします。
  2. concrete/blocks/ ディレクトリ内のファイルを application/blocks/ ディレクトリ内の同じフォルダ、同じファイル名で複製することでオーバーライドできます。

以上の手順で、以下の例外を除いて動作します。

controller.php のオーバーライド

controller.php をオーバーライドする際には、controller.php の名前空間(namespace)を変更し、オリジナルのブロックタイプコントローラーを継承する必要があります。例えば、記事(Content)ブロックのコントローラーをオーバーライドするには:

  1. application/blocks/content/controller.php ファイルを作成します。
  2. このファイルの名前空間は \Application\Block\Content になります。
  3. このファイルのクラスは、記事ブロックコントローラーを継承するようにします。
    class Controller extends \Concrete\Block\Content\Controller { // 中身は必要なメソッドのみ書く }

原文:Directory Structure & Concepts