日本語版
最新ニュース
企業

Optimizely CMS アドオンの作成

で パート1 このシリーズの第 1 回目では、Optimizely CMS 12 用の独自のアドオンの作成方法について説明しました。ここでは、理想的なソリューション構造、JavaScript とスタイルのベスト プラクティス、メニュー インターフェイスと認証の拡張について説明しました。第 2 回目では、エディター インターフェイス ガジェットの追加について説明します。このシリーズ全体の例は、この Optimizely アドオンテンプレート 私が創り上げてきたもの。 この記事内のすべてのコンテンツは私が執筆したものですが、簡潔さを向上させたり、よりフォーマルな口調にしたりするために、コピーの一部の要素は Chat GPT で処理されていることに注意してください。 エディターインターフェースにガジェットを追加する 標準のMVCコントローラーをCMSエディターガジェットにするには、 [IFrameComponent] 属性。属性の主なプロパティは次のとおりです。 タイトル : ガジェット セレクターに表示されるガジェットの名前。 説明 : ガジェットの簡単な説明。ガジェット セレクターにも表示されます。1 文にまとめることをお勧めします。 カテゴリー : ガジェットの適切なカテゴリ。コンテンツ固有のガジェットの場合は、「content」または「cms」に設定する必要があります。…

Optimizely CMS アドオンの作成

1725086457
2024-08-30 15:43:33

パート1 このシリーズの第 1 回目では、Optimizely CMS 12 用の独自のアドオンの作成方法について説明しました。ここでは、理想的なソリューション構造、JavaScript とスタイルのベスト プラクティス、メニュー インターフェイスと認証の拡張について説明しました。第 2 回目では、エディター インターフェイス ガジェットの追加について説明します。このシリーズ全体の例は、この Optimizely アドオンテンプレート 私が創り上げてきたもの。

この記事内のすべてのコンテンツは私が執筆したものですが、簡潔さを向上させたり、よりフォーマルな口調にしたりするために、コピーの一部の要素は Chat GPT で処理されていることに注意してください。

エディターインターフェースにガジェットを追加する

標準のMVCコントローラーをCMSエディターガジェットにするには、 [IFrameComponent] 属性。属性の主なプロパティは次のとおりです。

  • タイトル : ガジェット セレクターに表示されるガジェットの名前。
  • 説明 : ガジェットの簡単な説明。ガジェット セレクターにも表示されます。1 文にまとめることをお勧めします。
  • カテゴリー : ガジェットの適切なカテゴリ。コンテンツ固有のガジェットの場合は、「content」または「cms」に設定する必要があります。
  • URL : コントローラーアクションに対応するルート。
  • プラグインエリア : コンポーネントを利用可能にするシステム内の場所。
  • コンテキスト変更時に再読み込み : CMS インターフェース内で異なるコンテンツ項目が選択されるたびに、UI がガジェットを再読み込みできるようにします。

Optimizelyはこれらのコントローラーを自動的に識別し、 [IFrameComponent] CMS エディター インターフェース内のガジェットの追加ウィンドウに入力する属性:

エディターインターフェースがガジェットを読み込むと、 id クエリ文字列パラメータには、文字列形式 (例: 123_456) でバージョン管理されたコンテンツ参照が含まれます。左側の数字はコンテンツの永続的な ID を表し、右側の数字はそのコンテンツ アイテムの特定のバージョンを示します。この情報を使用して、コンテンツ アイテムの特定のバージョンを読み込み、ガジェットのモデルに組み込むことができます。

以下は、コントローラーに必要な最小限の設定例です。 [Authorize] コントローラーの属性と [HttpGet] アクションに属性を追加します。これにより、ユーザーが認証され、予期しないHTTP動詞を使用してインターフェイスにアクセスできないことが保証されます。 id クエリ文字列パラメータは、ユーザーが CMS エディター インターフェイス内で選択したページの特定のバージョンをロードして、ユーザーにコンテキスト固有の情報を提供します。

[Authorize(Policy = OptimizelyAddOnConstants.AuthorizationPolicy)]
[IFrameComponent(
    Url = "/optimizely-addon/gadget/index/",
    Title = "Example Gadget",
    Description = "An example gadget for the CMS Editor Interface.",
    Categories = "content",
    PlugInAreas = "/episerver/cms/assets",
    MinHeight = 200,
    MaxHeight = 800,
    ReloadOnContextChange = true)]
public sealed class GadgetController : Controller
{
    private readonly IContentLoader _contentLoader;

    public GadgetController(IContentLoader contentLoader)
    {
        _contentLoader = contentLoader;
    }

    [HttpGet]
    [Route("~/optimizely-addon/gadget/index")]
    public IActionResult Index()
    {
        var model = new GadgetViewModel
        {
            Page = GetPageData(Request),
            ContentId = Request.Query["Id"].ToString()
        };

        return View("~/Views/OptimizelyAddOn/Gadget/Index.cshtml", model);
    }

    private PageData? GetPageData(HttpRequest request)
    {
        var contentReferenceValue = request.Query["Id"].ToString() ?? string.Empty;
        if (string.IsNullOrWhiteSpace(contentReferenceValue))
        {
            return null;
        }

        var contentReference = new ContentReference(contentReferenceValue);
        if (_contentLoader.TryGet(contentReference, out var pageData))
        {
            return pageData;
        }

        return null;
    }
}

私が開発したガジェットでは ストットセキュリティでは、現在選択されているページのセキュリティ ヘッダーのプレビューのレンダリングにのみ焦点を当てています。Stott Security は、任意のページのコンテンツ セキュリティ ポリシーの拡張をサポートしているため、この機能を追加しました。ユーザーがヘッダー プレビューのコンテキストを明確に理解できるように、同じヘルパー メソッドを使用してページを読み込み、ガジェットのビュー モデルに追加します。

CMS エディター インターフェースにアドオンについて伝える

エディターインターフェースがアドオンを認識できるようにするには、アセンブリを宣言する必要があります。 module.config 個人的には、すべての情報がファイルで提供されているので、これは必須ではないと思います。 [IFrameComponent] 属性ですが、アプリケーションの起動時の検証では、この構成ファイルが存在することが必須であるようです。これは、UI とのより深い統合に関連した要件であると思われます。たとえば、カスタム DOJO エディター コードなどです。

以下は、 module.config ファイル。モジュール ノードの属性として承認ポリシーが含まれていることに注意してください。これは、アドオンに必要なポリシーに対応している必要があります。また、ガジェットを含むアセンブリの完全な名前がアセンブリ ノード内にリストされていることを確認します。



  
    
  

  
    
      
    
  
  • 追加する [IFrameComponent] 属性をコントローラーに追加して、CMS エディター インターフェースのガジェットを定義します。
  • 追加する [Authorize] コントローラーに属性を追加してセキュリティを確保します。
  • 次のようなHTTP動詞属性を追加します。 [HttpGet] 予期しないアクセス試行を防ぐために、コントローラーのアクションに追加します。
  • 追加 module.config ファイルに [MyCmsWebsite]/modules/_protected/[MyAddOn]/module.config CMS がガジェット アセンブリを検証できるようにフォルダーを作成します。

2024年8月30日

#Optimizely #CMS #アドオンの作成

執筆者について: nipponese

Nipponese News編集部は、国内外のニュースを日本語で分かりやすくお届けします。