Optimizely Graph クライアント ツールと CMS d の活用方法

1712305065
2024-04-04 10:15:49

についての私の最初のブログを読んでください Optimizely Graph クライアントの紹介 その利点を知るために。

Optimizely Graph Client の他に、次のツールもサポートされるようになりました。 スキーマ モデルを C# モデル クラスに生成する。 このツールは、特にコンテンツ配信によって CMS モデルが変換された後、Optimizely Graph にインデックス付けされたモデルの正確な生成をサポートします。 このシンプルなツールは、いくつかのコマンドを実行するだけでインストールして使用でき、クエリ ビルダーや検索応答の逆シリアル化に非常に役立ちます。

特に、ヘッドレス アーキテクチャでは、グラフ スキーマと CMS モデル内の特定のプロパティの名前またはタイプが異なる場合があります。 コンテンツ配信 ドキュメンテーション; さらに、インデックス作成プロセスにより、Optimizely Graph のスキーマ モデルに新しいプロパティが導入されます。 生成ツールに依存せずに、既存の CMS モデル (またはカスタム モデル) のみを使用してクエリを構築したいと考えます。 気の利いたヒントをご紹介します。

拡張メソッドの使用

自由に使える最も洗練されたソリューションの 1 つは、拡張メソッドを活用することです。 クエリ ビルダーで必要なプロパティと同じ名前と戻り値の型を持つメソッドを作成すると、そのメソッドをオブジェクト モデルのフィールドとして使用できます。 わずか数行のコードで、拡張メソッドを CMS モデルにシームレスに統合し、機能と柔軟性を強化できます。

Alloy サイトの例を考えてみましょう。 URLコンテンツタイプ PageData タイプと ContentReference タイプの両方に。 次に、これらのメソッドをクエリに使用します。

    public static class CmsModelsExtension
    {
        public static string Url(this SitePageData pageData)
        {
            return string.Empty;
        }
        public static string Url(this ContentReference content)
        {
            return string.Empty;
        }
        public static IEnumerable ContentType(this SitePageData pageData)
        {
            return Array.Empty();
        }
    }

そして、これらのメソッドをフィールドの選択、フィルタリング、ファセットに使用できます。

var query = _client
                .OperationName("Alloy_Sample_Query")
                .ForType()
                    .Skip(0)
                    .Limit(10)
                    .Fields(x=> x.Url(), x=> x.ParentLink.Url(), x=> x.ContentLink.Url())
                    .Filter(x=> x.Url().MatchPrefix("https"))
                    .Search(q)
                    .FilterForVisitor()
                    .Facet(x=>x.ContentType().FacetFilters

この方法は、IEnumerable のプロパティを選択する必要がある場合にも便利です。。 プロパティと同じ名前の拡張メソッドを作成し、適切な型を返すだけです。

選択例 表示名 プロパティから ExistingLanguages (IEnumerable) SitePageData:

public static class CmsModelsExtension
{
      ...
      public static string DisplayName(this IEnumerable cultures)
      {
          return string.Empty;
      }
}
query.Field(x=> x.ExistingLanguages.DisplayName());
query.Filter(x=> x.ExistingLanguages.DisplayName().Eq("English"));

ContentApiModel のプロパティの更新 (非推奨)

もう 1 つのアプローチには、ContentApiModel のプロパティを追加または削除することによって、CMS モデルによく似たスキーマ モデルを微調整することが含まれます。 技術的には可能ですが、この方法には注意することをお勧めします。 冗長なプロパティが導入され、デバッグ プロセスが複雑になる可能性があります。

結論として、生成ツールの利便性を選択するか、拡張方法の柔軟性を選択するかにかかわらず、当社は CMS モデルの複雑な状況をナビゲートするために必要なツールとテクニックを提供することに尽力しているので、ご安心ください。

2024 年 4 月 4 日

#Optimizely #Graph #クライアント #ツールと #CMS #の活用方法

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Recent News

Editor's Pick