0

各サイトが独自のニュースを持ち、他のサイトからのニュースを組み合わせて表示できるマルチサイト サイトコア ソリューションを開発しています。

問題: 各サイトには独自のニュース要件があり、テンプレート フィールドの 90% は一致しますが、残りの 10% は異なります。

たとえば、サイト A には、作成者リストが構成ノードで作成される作成者ドロップダウン リストを含むニュース テンプレートがあります。Site-B には、作成者が FREE TEXT フィールドであるニュース テンプレートがあります。

そのため、Glass Mapper が自動的に作成者フィールドをマップしようとすると、フリー テキストの場合は失敗します。

解決策: これは、すべてのサイトで Author as ドロップダウンを作成することで解決できますが、製品所有者はこれを望んでいません。

もう 1 つの解決策は、両方のソースからのニュース フィールドを手動でマッピングするか、AUTOMAP などを使用することです。

望ましい解決策: Glassmapper は、作成者テキスト フィールドまたはドロップダウン フィールドをその場で自動的に解決して入力します。

上記は可能ですか?

ありがとうございました。

4

3 に答える 3

1

次のように推論型を使用できます。

public interface IBaseNews
{
    string Author {get; set;}
    //List all other shared fields below
}

[SitecoreType(TemplateId="....", AutoMap = true)]
public class NewsSiteA : IBaseNews
{
    [SitecoreField]
    public string Author {get; set;}

    //List all fields which are unique for SiteA

}

[SitecoreType(TemplateId="....", AutoMap = true)]
public class NewsSiteB : IBaseNews
{
    [SitecoreField]
    public string Author {get; set;}

    //List all fields which are unique for SiteB

}

さて、コードは次のようになります。

IBaseNews newsClass = NewsItem.GlassCast<IBaseNews>(true,true);
//You can use Author property now
于 2014-12-21T15:21:53.777 に答える
1

「流暢な構成」、http://glass.lu/Mapper/Sc/Tutorials/Tutorial8.aspxでこれを解決します。Glass Mapper に最近追加された新しい Delegate 機能と組み合わせます。デリゲート機能は、最初にここで導入および説明されました: http://cardinalcore.co.uk/2014/07/02/controlling-glass-fields-from-your-own-code/

デリゲート機能の Nuget パッケージ: https://www.nuget.org/packages/Cardinal.Glass.Extensions.Mapping/

于 2014-12-21T13:25:50.590 に答える