2012-11-22 67 views
1

我在Orchard CMS中創建了一個自定義模塊。該模塊包含多個小部件。其中一個小部件(我們稱之爲WinnersFeedWidget)包含幾個自定義的聯繫零件記錄(讓我們稱它們爲NumberOfWinnersToShow和SkinName)。如何在Orchard的命令行中設置小部件上的ContentPartRecord值?

我可以使用命令

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

添加WinnersFeedWidget到區域,但我希望能夠通過命令行設置NumberOfWinnersToShow和SkinName的值也是如此。

我該如何做到這一點?

+1

您可能需要編寫自己的命令。 –

+0

謝謝伯特蘭。爲了達到這個目的,我看了一下擴展Orchard命令行工具,但是想知道是否有一個我忽略的開箱即用的解決方案。 –

回答

0

爲尋找一個答案的利益question-

因爲我是創建一個配方,我能夠通過添加下面的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是轉換一個helper方法由進口商提供給int的值)

對於這個工作的一個很好的例子,我會建議從Gallery中下載Featured Item Slider模塊,並查看他們的Driver類。

相關問題