3

Orchard admin を使用して、 3 つの HTML フィールドを持つ「Spotlight Wrapper」という新しいコンテンツ パーツを作成しました。次に、'Template 1' というコンテンツ タイプを作成し、'Spotlight Wrapper'を割り当てました。次に、「ホームページ」という新しい「テンプレート 1」コンテンツ アイテムを作成しました。次に、Fileds_Contrib.Html-Spotlight Wrapper.cshtml というファイルを作成して、「Spotlight Wrapper」の各 HTML フィールドを でラップしましたが、これは機能しています。私は今追加しました:

<Place Parts_SpotlightWrapper="Content:before;Wrapper=Parts_SpotlightWrapper" />

そして作成しました:

Views\Parts.SpotlightWrapper.cshtml

「Spotlight Wrapper」コンテンツ パーツ全体を

4

1 に答える 1

2

Parts_SpotlightWrapper シェイプをそれ自体でラップしようとすると、循環参照につながると思われるラッパーを宣言しました。ラッパーは、特定の形状の親として機能する Razor (cshtml) コードの個別の部分です。

必要な動作を実現するには、必要なラッパー HTML コードを含む別の .cshtml ファイル (例: MyWrapper.cshtml) を作成し、次のように既存のパーツに添付する必要があります。

<Place Parts_SpotlightWrapper="Content:before;Wrapper=MyWrapper" />

ラッパーコードは次のようになります。このような:

<ul>
    @Display(Model.Child)
</ul>

ところで - Orchard.Widgetsでどのように行われているか見てみてください。Widgetシェイプをラップする2 つのラッパーWidget.WrapperWidget.ControlWrapperがあります。これらの宣言は Placement.info ファイル内にはありませんが (あなたが行ったように)、Shapes.cs形状定義にハードコーディングされていますが、最終的な効果は完全に同じです。Placement.info を使用した手法は、後でショートカットとして紹介されました。

HTH

于 2011-05-11T11:29:17.893 に答える