Orchardcms 如何从Orchard中的命令行在小部件上设置ContentPartRecord的值?
我已经在Orchard CMS中创建了一个自定义模块。这个模块包含几个小部件。其中一个小部件我们称之为WinnerFeedWidget,它包含两个自定义Contant部分记录,我们称它们为NumberOfWinnersToShow和SkinName 我可以使用以下命令将WinnerFeedWidget添加到区域Orchardcms 如何从Orchard中的命令行在小部件上设置ContentPartRecord的值?,orchardcms,Orchardcms,我已经在Orchard CMS中创建了一个自定义模块。这个模块包含几个小部件。其中一个小部件我们称之为WinnerFeedWidget,它包含两个自定义Contant部分记录,我们称它们为NumberOfWinnersToShow和SkinName 我可以使用以下命令将WinnerFeedWidget添加到区域 widget create WinnersFeedWidget /Title:"Recent Winners" /Zone:"AsideSecond" /Position:"2" /La
widget create WinnersFeedWidget /Title:"Recent Winners" /Zone:"AsideSecond" /Position:"2" /Layer:"Default" /Identity:"WinnersContainerWidget" /RenderTitle:true
但是我也希望能够从命令行设置NumberOfWinnersToShow和SkinName的值
我怎样才能做到这一点呢?为了所有想知道这个问题答案的人- 因为我正在创建一个配方,所以我能够通过将以下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>
GetIntegerValue是一个助手方法,用于将导入程序提供的值转换为int
作为一个很好的例子,我建议您从Gallery下载特色项目滑块模块,并查看它们的驱动程序类。您可能需要编写自己的命令。谢谢Bertrand。我确实考虑过为此扩展Orchard命令行工具,但想知道是否有一个我忽略的现成解决方案。
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");
}