1

Orchard CMS でカスタム モジュールを作成しました。このモジュールには、いくつかのウィジェットが含まれています。これらのウィジェットの 1 つ (WinnersFeedWidget と呼びましょう) には、いくつかのカスタム コンタント パーツ レコード (NumberOfWinnersToShow と SkinName と呼びましょう) が含まれています。

コマンドを使用して、WinnersFeedWidget をゾーンに追加できます。

widget create WinnersFeedWidget /Title:"Recent Winners" /Zone:"AsideSecond" /Position:"2" /Layer:"Default" /Identity:"WinnersContainerWidget" /RenderTitle:true

しかし、NumberOfWinnersToShow と SkinName の値をコマンド ラインからも設定できるようにしたいと考えています。

どうすればこれを達成できますか?

4

1 に答える 1

0

この質問に対する答えを探している人の利益のために-

レシピを作成していたので、次の XML をレシピの要素に追加することで、同じ効果を得ることができました。

<WinnersFeedWidget Id="/Identifier=WinnersFeed" Status="Published">
  <WinnersFeedPart NumberOfWinnersToShow="15" SkinName="Blue"/>
  <CommonPart Owner="/User.UserName=OrchardAdmin" Container="/Layer.LayerName=Default" CreatedUtc="2012-11-20T17:08:00Z" PublishedUtc="2012-11-20T17:08:00Z" ModifiedUtc="2012-11-20T17:08:00Z" />
  <WidgetPart Title="Recent Winners" Position="2" Zone="AsideSecond" RenderTitle="true" />
</WinnersFeedWidget>

この場合、WinnersFeedPart はウィジェット上のパーツの名前です。

また、インポートとエクスポートのオーバーライドを使用してドライバー クラスを更新する必要がありました (エクスポート機能が必要な XML を正しく生成できるようにするため)。

    protected override void Exporting(WinnersFeedPart part, ExportContentContext context)
    {
        context.Element(part.PartDefinition.Name).SetAttributeValue("NumberOfWinnersToShow", part.NumberOfWinnersToShow);
        context.Element(part.PartDefinition.Name).SetAttributeValue("SkinName", part.SkinName);
    }

    protected override void Importing(WinnersFeedPart part, ImportContentContext context)
    {
        part.NumberOfWinnersToShow= GetIntegerValue(part, context, "NumberOfWinnersToShow");
        part.SkinName= context.Attribute(part.PartDefinition.Name, "SkinName");
    }

(GetIntegerValue は、インポーターによって提供された値を int に変換するヘルパー メソッドです)

この作業の良い例として、Gallery から Featured Item Slider モジュールをダウンロードし、それらの Driver クラスを確認することをお勧めします。

于 2012-11-23T12:37:39.753 に答える