サイトとテナントのスキャフォールディングにモジュールを追加する

概要

スキャフォールディングされたアイテムを追加して SXA を拡張します。

スキャフォールディングにより、モジュールをサイトとテナントに追加できます SXA モジュールは、機能または Foundationフォルダーに保存されます。

  • /sitecore/システム/設定/Foundation/エクスペリエンス アクセラレーター/

  • /sitecore/システム/設定/機能/エクスペリエンス アクセラレーター/

新しいモジュールを定義するには、サイトの設定テナント設定、またはグリッド設定 アイテムをモジュールに追加し、Scaffolding フォルダー(sitecore/テンプレート/Foundation/エクスペリエンス アクセラレーター/Scaffolding/) からアクション タイプを追加する必要があります。

独自のモジュール スキャフォールディング定義を追加するには:

  1. /sitecore/システム/設定/Foundation/ または /sitecore/システム/設定/機能/ に移動してフォルダーを追加します。

  2. 新しいフォルダーを右クリックして、[テンプレートから挿入] をクリックします。

  3. [テンプレートから挿入] ダイアログ ボックスで、sitecore/テンプレート/Foundation/エクスペリエンス アクセラレーター/スキャフォールディング/ルートに移動し、追加するモジュールのタイプに応じて、[グリッド設定]、[サイト設定]、または [テナント設定] をクリックし、[挿入] をクリックします。

    新しいサイトの設定を追加します。
  4. インストールするモジュールのタイプに応じて、[データ] セクションの次のフィールドに入力します。

    設定

    フィールド

    説明

    サイトの設定

    名前

    サイト作成ウィザードに表示するサイト モジュールの名前。

    依存関係

    モジュールをインストールする順序を指定します。

    デフォルトで含める

    サイト作成ウィザードでモジュールをデフォルトで有効にする場合に選択します。

    インストールされている場合は含める

    選択したアクションが現在のテナントに適用されたかどうかに応じて、モジュールが自動的に含まれます。

    [選択済み] フィールドが空の場合、新しいサイト作成ウィザードでこのモジュールをインストールするかどうかを決定できます。

    システム モジュール

    モジュールを自動的にインストールする場合に選択します。この場合、モジュールはダイアログ ボックスに表示されません。

    テナント設定

    名前

    テナント作成ウィザードに表示するテナント モジュールの名前。

    デフォルトで含める

    テナント作成ウィザードでモジュールをデフォルトで有効にする場合に選択します。

    システム モジュール

    モジュールを自動的にインストールする場合に選択します。この場合、モジュールはテナント作成ウィザードに表示されません。

    グリッド設定

    名前

    サイト作成ウィザードに表示されるグリッド システムの名前。

    依存関係

    モジュールをインストールする順序を指定します。

    グリッドの定義

    グリッド定義アイテムを参照します。たとえば、Foundation グリッド システムの場合は、設定/機能/エクスペリエンス アクセラレーター/Foundation/Foundation になります。

アイテムの追加、テンプレートの編集、PowerShell スクリプトの実行など、さまざまなアクション タイプを使用してモジュールを定義できます。使用可能なアクションは、アクション フォルダー(sitecore/テンプレート/Foundation/エクスペリエンス アクセラレーター/Scaffolding/アクション) に保存されます。

スキャフォールディング アクション

スキャフォールディング アクションを追加するには:

  • 新しいモジュールに移動し、新しいモジュールに追加した設定項目を右クリックします。たとえば、[サイト設定] アイテムを右クリックし、[サイト アイテムを追加します] アクションを挿入します。

    サイト アイテムを追加する

次のアクションを使用できます。

アクション タイプ

フィールド

説明

テナント アイテムを追加する

場所

テナントの下に新しいアイテムを追加します。

テンプレート

新しいテナント アイテムの作成に使用されるテンプレート。

名前

アイテム名。

フィールド

作成後に新しいアイテムのフィールドを設定するためのフィールドと値のマッピング。

テナント テンプレートを編集する

テンプレート

テナント テンプレートにコピーするテンプレートを選択します。定義された設定に従ってテンプレートが編集されます。

アクションのタイプ

アクション タイプを選択します。

ベース テンプレートまたは挿入オプション テンプレート

前のフィールドで選択したアクションの引数として使用するアイテムを選択します。

テナント スクリプトの実行

スクリプト

実行する PowerShell スクリプトを選択します。スキャフォールディング スクリプトを使用して、サイトまたはテナントの作成プロセスの一部を自動化できます。以下に例を示します。

function Invoke-ModuleScriptBody {
[CmdletBinding()]
    param(
        # Depending on context could be a Tenant or Site item
    [Parameter(Mandatory=$true, Position=0 )]
[Item]$Root,
[Parameter(Mandatory=$true, Position=1 )]        
        [Item[]]$TenantTemplates                
    )
begin {
Write-Verbose "Cmdlet Invoke-ModuleScriptBody - Begin"
}
process {
Write-Verbose "Cmdlet Invoke-ModuleScriptBody - Process"
        # Script body
        # Put your custom logic here
}
end {
Write-Verbose "Cmdlet Invoke-ModuleScriptBody - End"
}
}

サイト アイテムを追加する

場所

サイトの下に新しいアイテムを追加します。

テンプレート

新しいサイト アイテムの作成に使用されるテンプレート。

名前

新しいサイト アイテムの名前。

フィールド

作成後に新しいアイテムのフィールドを設定するためのフィールドと値のマッピング。

サイト アイテムを編集する

テンプレート

追加の挿入オプションを追加してサイト アイテムを編集します。

アクションのタイプ

アクション タイプを選択します。

挿入オプション

アイテムの挿入オプションを定義します。

サイト スクリプトを実行する

スクリプト

実行する PowerShell スクリプトを選択します。スキャフォールディング スクリプトを使用して、サイトまたはテナントの作成プロセスの一部を自動化できます。以下に例を示します。

function Invoke-ModuleScriptBody {
[CmdletBinding()]
    param(
        # Depending on context could be a Tenant or Site item
    [Parameter(Mandatory=$true, Position=0 )]
[Item]$Root,
[Parameter(Mandatory=$true, Position=1 )]        
        [Item[]]$TenantTemplates                
    )
begin {
Write-Verbose "Cmdlet Invoke-ModuleScriptBody - Begin"
}
process {
Write-Verbose "Cmdlet Invoke-ModuleScriptBody - Process"
        # Script body
        # Put your custom logic here
}
end {
Write-Verbose "Cmdlet Invoke-ModuleScriptBody - End"
}
}

編集テーマを編集する

ベース テーマ

編集テーマ インスタンスに追加するベース テーマのリスト。

サイトのテーマを編集する

ベース テーマ

編集テーマ インスタンスに追加するベース テーマのリスト。

設定後のステップ

スクリプト

実行する PowerShell スクリプトを選択します。サイトが作成されたら、スキャフォールディング スクリプトを使用してアクションを実行できます。

function Invoke-Step {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $true, Position = 0 )]
        [Sitecore.XA.Foundation.Scaffolding.Models.CreateNewSiteModel]$Model
    )
    begin {
        Write-Verbose "Cmdlet Invoke-Validation - Begin"
    }
    process {
        Write-Verbose "Cmdlet Invoke-Validation - Process"
    }
    end {
        Write-Verbose "Cmdlet Invoke-Validation - End"
    }
}

入力検証ステップ

スクリプト

実行する PowerShell スクリプトを選択します。サイトを作成する前に、スキャフォールディング スクリプトを使用してモデルを検証できます。いずれかの検証スクリプトによって返された結果が false の場合、[新しいサイト] ダイアログ ボックスが再度表示され、以前に選択した値の一部を修正できます。

function Invoke-Validation {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $true, Position = 0 )]
        [Sitecore.XA.Foundation.Scaffolding.Models.CreateNewSiteModel]$Model
    )
    begin {
        Write-Verbose "Cmdlet Invoke-Validation - Begin"
    }
    process {
        Write-Verbose "Cmdlet Invoke-Validation - Process"    
        # Return $true or $false as a result of validation
        $true
    }
    end {
        Write-Verbose "Cmdlet Invoke-Validation - End"
    }

設定後のステップ

スクリプト

実行する PowerShell スクリプトを選択します。テナントが作成されたら、スキャフォールディング スクリプトを使用してアクションを実行できます。

function Invoke-Step {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $true, Position = 0 )]
        [Sitecore.XA.Foundation.Scaffolding.Models.CreateNewTenantModel]$Model
    )
    begin {
        Write-Verbose "Cmdlet Invoke-Validation - Begin"
    }
    process {
        Write-Verbose "Cmdlet Invoke-Validation - Process"
    }
    end {
        Write-Verbose "Cmdlet Invoke-Validation - End"
    }
}

入力検証ステップ

スクリプト

実行する PowerShell スクリプトを選択します。テナントを作成する前に、スキャフォールディング スクリプトを使用してモデルを検証できます。いずれかの検証スクリプトによって返された結果が false の場合、[新しいテナント] ダイアログ ボックスが再度表示され、以前に選択した値の一部を修正できます。

function Invoke-Validation {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $true, Position = 0 )]
        [Sitecore.XA.Foundation.Scaffolding.Models.CreateNewTenantModel]$Model
    )
    begin {
        Write-Verbose "Cmdlet Invoke-Validation - Begin"
    }
    process {
        Write-Verbose "Cmdlet Invoke-Validation - Process"
        # Return $true or $false as a result of validation
        $true
    }
    end {
        Write-Verbose "Cmdlet Invoke-Validation - End"
    }
}

削除前のステップ

スクリプト

実行する PowerShell スクリプトを選択します。スキャフォールディング スクリプトを使用して、サイトまたはテナントの削除プロセスの一部を自動化できます。このアクションは、Remove-Tenant または Remove-Site コマンドレットが呼び出されたときに実行されます。カスタム モジュールによって作成されたアイテムは、デフォルトの削除プロセスでは削除されないため (アイテムが異なるフォルダーにある場合など)、このスクリプトを使用して削除できます。

function Invoke-Step {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $true, Position = 0 )]
        [Item]$Root
    )
    begin {
        Write-Verbose "Cmdlet Invoke-Validation - Begin"
    }
    process {
        Write-Verbose "Cmdlet Invoke-Validation - Process"
    }
    end {
        Write-Verbose "Cmdlet Invoke-Validation - End"
    }
}

削除後のステップ

スクリプト

実行する PowerShell スクリプトを選択します。スキャフォールディング スクリプトを使用して、サイトまたはテナントの削除プロセスの一部を自動化できます。このアクションは、Remove-Tenant または Remove-Siteコマンドレットが呼び出されたときに実行されます。このスクリプトを使用して、標準の削除では削除されない、カスタム モジュールによって作成されたアイテムを削除できます (テナント/サイト ルート アイテム、テナント/サイト メディア ライブラリ、テナント テンプレートなどの一般的なフォルダー外にアイテムを保存した場合など)。

function Invoke-Step {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $true, Position = 0 )]
        [Item]$Root
    )
    begin {
        Write-Verbose "Cmdlet Invoke-PostDeleteStep - Begin"
    }
    process {
        Write-Verbose "Cmdlet Invoke-PostDeleteStep - Process"
    }
    end {
        Write-Verbose "Cmdlet Invoke-PostDeleteStep - End"
    }
}

削除前の検証ステップ

実行する PowerShell スクリプトを選択します。スキャフォールディング スクリプトを使用して、サイトまたはテナントの削除プロセスの一部を自動化できます。以下に例を示します。

テナントまたはサイトを削除する前に、スキャフォールディング スクリプトを使用して状態を検証できます。いずれかの検証スクリプトによって返された結果が false の場合、削除操作はキャンセルされます。

function Invoke-Validation {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $true, Position = 0 )]
        [Item]$Root
    )
    begin {
        Write-Verbose "Cmdlet Invoke-Validation - Begin"
    }
    process {
        Write-Verbose "Cmdlet Invoke-Validation - Process"
        # Return $true or $false as a result of validation
        $true
    }
    end {
        Write-Verbose "Cmdlet Invoke-Validation - End"
    }
}