2

私は果樹園のカスタムテーマを書こうとしていますが、これまでのところあまり成功していません. パート代替品に関するBertrand Le Roy の記事を読みましたが、うまくいきません。

最近のブログ投稿のリストをフロント ページに表示していますが、かなり標準的です。メタデータ部分、つまり時間形式によって生成されるマークアップを変更したいと考えています。

IShapeTableProviderメタデータの要約部分のブログ固有の代替を作成するために を作成しました。

public class MetaDataShapeProvider : IShapeTableProvider
{
    private readonly IWorkContextAccessor workContextAccessor;

    public MetaDataShapeProvider(IWorkContextAccessor workContextAccessor)
    {
        this.workContextAccessor = workContextAccessor;
    }

    public void Discover(ShapeTableBuilder builder)
    {
        builder
          .Describe("Parts_Common_Metadata_Summary")
          .OnDisplaying(displaying =>
          {
              ContentItem contentItem = displaying.Shape.ContentItem;
              if (contentItem != null)
                displaying.ShapeMetadata.Alternates.Add("Metadata__" + contentItem.ContentType);
          });
    }
}

これは正しくキャッチされていますが、contentItem は null です。「Metadata-BlogPost」のような固定名の代替テンプレートを作成してそれを使用する必要があります。これを汎用的にするには、別の代替テンプレートを別の場所で使用できるように動的な名前にする必要があります。

ありがとう、

イアン

4

1 に答える 1

1

次のように、形状がレンダリングされるコンテンツ パーツからコンテンツ アイテムを取得してみてください。

displaying.Shape.ContentPart.ContentItem;

それ以外の

displaying.Shape.ContentItem;

Parts_Common_Metadata_Summary図形は、名前付きパラメーターContentPartとして渡される関連コンテンツ パーツ オブジェクトを取得します。

HTH

于 2011-03-09T00:48:27.047 に答える