definePageLayout() を使用し、既に存在するレイアウト(自分のもの、または標準の Twenty のレイアウト)に単一のタブを追加するには definePageLayoutTab() を使用します。
| ユースケース | エンティティ |
|---|---|
| 自分が所有するオブジェクト上のレコードページ全体のレイアウトを定義する | definePageLayout |
| 既存のレイアウト(自分のオブジェクト、または標準オブジェクト)にタブを1つ追加する | definePageLayoutTab |
definePageLayout
自分が詳細ページ全体を所有している場合に使用します。通常は、自分で定義したカスタムオブジェクトに対して使用します。src/page-layouts/example-record-page-layout.ts
主なポイント
typeは通常、特定のオブジェクトの詳細ビューをカスタマイズするために'RECORD_PAGE'を指定します。objectUniversalIdentifierは、このレイアウトを適用するオブジェクトを指定します。- 各
tabは、title、position、layoutMode(フリーフォームのレイアウトにはCANVAS)を持つページのセクションを定義します。 - タブ内の各
widgetは、front component、リレーションリスト、その他のビルトインウィジェットタイプをレンダリングできます。 - タブの
positionは表示順を制御します。 組み込みタブの後にカスタムタブを配置するには、より大きな値(例:50)を使用します。
definePageLayoutTab
既存のレイアウトにタブを追加したい場合にのみ使用します。たとえば、標準の Company ページにアナリティクスタブを追加する場合や、自分のオブジェクトのレイアウトに AI サマリータブを追加する場合などです。src/page-layouts/example-extra-tab.ts
主なポイント
-
pageLayoutUniversalIdentifierは必須であり、インストール時点ですでに存在するページレイアウトを指している必要があります。標準の Twenty のレイアウト、または自分のアプリで定義したレイアウトのいずれかです。 別のインストール済みアプリが所有するレイアウトへのアプリ間参照は、現時点ではサポートされていません。 親レイアウトが存在しない場合、インストールは明確な検証エラーとともに失敗します。 -
標準の Twenty レイアウトの場合は、
twenty-sdk/defineから識別子を import します:各レイアウトエントリは、そのtabsとそのwidgetsも公開しているため、任意の階層を参照できます:短いエイリアスSTANDARD_PAGE_LAYOUTも利用できます: -
widgetsはこのタブのみにスコープされます。definePageLayout内でインライン定義されたウィジェットとまったく同様に、front components、views などを参照します。 -
positionは、対象のレイアウト上にある既存のタブとの順序を制御します。 組み込みタブとの相対位置が希望どおりになるような値を選択してください。 -
既存のレイアウトに追加だけを行いたい場合は、
definePageLayoutの代わりにこちらを使用してください。 レイアウト全体を自分が所有している場合は、definePageLayoutを使用してください。