MT7のコンテンツタイプでMTブロックエディターのカスタムブロックの使用法

新しいブロックエディタプラグインを正式公開 – ブログ | CMSプラットフォーム Movable Type ドキュメントサイト とありますように、最近Movable Type7でMTブロックエディターが正式にリリースされました。
MTブロックエディターは自分で独自のブロックを追加できる、カスタムブロック機能があります。

この機能を使用する事で色々活用する事ができそうです。
カスタムブロックでクラス名の付与程度であれば、 カスタムブロック設定画面で簡単にできますが、
出力HTMLの加工をする必要がある場合は、カスタムスクリプト(カスタムスクリプトはそれ以外にも色々できますが)か テンプレートで作成する必要があります。


カスタムスクリプトとテンプレートの大きな違いは、デザインの加工タイミングになります。

カスタムスクリプトは基本、記事なりコンテンツデータなりを編集画面で登録しているタイミングでHTMLを加工します。

その為テンプレートでは今まで通りの記述方法で使う事が可能です。

一方テンプレート方式は構築時のHTML作成時に加工する形となります。
テンプレート方式のメリットはデータ登録後もデザイン変更が発生した場合、 テンプレートを直せば既存データーの修正は必要ない事だと思います。
カスタムスクリプトの場合、確認していないので、 おそらくですがHTMLを加工した形でデータベースに保存してしまう為、再登録等の考慮が必要な気がします。


記事やWEBでの記載方法は検索すると結構ひかかるのですが コンテンツタイプでの記載方法があまりのっていなかったので備忘録代わりに

解ってしまえばいたって簡単です。
呼び出す本体からは

BlockEditorBlocksのtag=”ContentFieldValue”と記述すればよいだけです。


個人的には、 勿論、複雑な処理をする場合はカスタムブロックの識別子毎にもテンプレートモジュールを作成しますが カスタムブロック用のプリセット単位でテンプレートモジュールを作成し識別子毎に条件分岐する形が良いかと思ってます。 type名はcutom-識別子になります。
ct_blocksとしてテンプレートモジュールを作成

<mt:BlockEditorBlocks tag="ContentFieldValue">
    <mt:If name="type" eq="custom-識別子1">
        <div class="aaa"><mt:Var name="__value__" /></div>
    <mt:ElseIf name="type" eq="custom-ct_識別子2">
        <p class="aaa"><mt:Var name="__value__" />
    <mt:else>
        <mt:Var name="__value__" />
    </mt:If>    
</mt:BlockEditorBlocks>

実際は上記のタグ出力であれば、カスタムブロック設定画面のみで出来てしまいますが分かりやすようにしております。
コンテンツフィールドの名前、本文でMTブロックエディターのカスタムブロックを使用する場合

<mt:ContentField content_field="本文">
    <mt:Include module="ct_blocks" >
</mt:ContentField>



参考にさせていたページ:
https://movabletype.net/blog/2021/01/banner-block.html
https://movabletype.net/blog/2020/06/excel-table.html