# Markdownブロック

## 導入

Markdownブロックは、データソースにバインドせずに利用できます。Markdown記法を使ってテキストコンテンツを定義し、整形されたテキストを表示するのに使えます。

## ブロックの追加

ページやポップアップにMarkdownブロックを追加できます。

![20251026230916](https://static-docs.nocobase.com/20251026230916.png)

また、フォームブロックや詳細ブロック内には、インライン（inline-block）のMarkdownブロックを追加することも可能です。

![20251026231002](https://static-docs.nocobase.com/20251026231002.png)

## テンプレートエンジン

**[Liquidテンプレートエンジン](https://liquidjs.com/tags/overview.html)** を採用しており、強力で柔軟なテンプレートレンダリング機能を提供します。これにより、コンテンツを動的に生成し、カスタマイズして表示できます。テンプレートエンジンを使うと、以下のことが可能です。

-   **動的補間（ダイナミック・インターポレーション）**：テンプレート内でプレースホルダーを使って変数を参照します。例えば、`{{ ctx.user.userName }}` は対応するユーザー名に自動的に置き換えられます。
-   **条件付きレンダリング**：条件文（`{% if %}...{% else %}`）をサポートしており、異なるデータ状態に基づいて異なるコンテンツを表示できます。
-   **ループ処理**：`{% for item in list %}...{% endfor %}` を使って配列やコレクションを繰り返し処理し、リスト、テーブル、または繰り返しモジュールを生成します。
-   **組み込みフィルター**：`upcase`、`downcase`、`date`、`truncate` など、豊富なフィルターが用意されており、データのフォーマットや処理が可能です。
-   **拡張性**：カスタム変数や関数をサポートしており、テンプレートロジックの再利用性や保守性を高めます。
-   **セキュリティと隔離**：テンプレートのレンダリングはサンドボックス環境で実行されるため、危険なコードの直接実行を防ぎ、セキュリティを向上させます。

Liquidテンプレートエンジンを活用することで、開発者やコンテンツ作成者は、**動的なコンテンツ表示、パーソナライズされたドキュメント生成、複雑なデータ構造のテンプレートレンダリングを簡単に実現**でき、効率と柔軟性を大幅に向上させることができます。

## 変数の使用

ページ内のMarkdownでは、一般的なシステム変数（現在のユーザー、現在のロールなど）をサポートしています。

![20251029203252](https://static-docs.nocobase.com/20251029203252.png)

一方、ブロック行操作ポップアップ（またはサブページ）内のMarkdownでは、より多くのデータコンテキスト変数（現在のレコード、現在のポップアップレコードなど）をサポートしています。

![20251029203400](https://static-docs.nocobase.com/20251029203400.png)

## QRコード

Markdown内でQRコードを設定できます。

![20251026230019](https://static-docs.nocobase.com/20251026230019.png)

```html
<qr-code value="https://www.nocobase.com/" type="svg"></qr-code>
```