2012-11-22 3 views
1

Orchard CMS에서 사용자 지정 모듈을 만들었습니다. 이 모듈은 여러 위젯을 포함합니다. 이 위젯 중 하나 (WinnersFeedWidget라고 부르 자)는 몇 개의 커스텀 Contant Part Records (NumberOfWinnersToShow와 SkinName이라고 부르 자)를 포함하고있다.Orchard의 명령 행에서 위젯의 ContentPartRecord 값을 설정하는 방법은 무엇입니까?

나는 명령

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

를 사용하여 영역에 WinnersFeedWidget을 추가 할 수 있지만, 나뿐만 아니라 명령 줄에서 NumberOfWinnersToShow 및 SkinName의 값을 설정할 수 있도록하고 싶습니다.

어떻게하면됩니까? 내가, 내가 제조법의 요소에 다음 XML을 추가하여 같은 효과를 달성 할 수 있었다 조리법을 창조 되었기 때문에이에 대한 답을 찾는 사람의 이익을 위해

+1

자신 만의 명령을 작성해야 할 수도 있습니다. –

+0

Bertrand에게 감사드립니다. 나는이 목적을 위해 과수원 명령 줄 도구를 확장하는 방법에 대해 살펴 보았지만 간과 한 상자 밖의 해결책이 있는지 궁금해하고있었습니다. –

답변

0

을 질문 - :

<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는 위젯에있는 부품의 이름입니다.

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 변환 도우미 방법은 다음과 같습니다

또한 (내보내기 기능이 제대로 필요한 XML을 생성 할 수 있도록) 가져 오기 및 내보내기에 대한 재정의 내 드라이버 클래스를 업데이트했다 수입업자가 int에 제공 한 값)

이 작업의 좋은 예를 보려면 갤러리에서 Featured Item Slider 모듈을 다운로드하고 해당 Driver 클래스를 살펴 보는 것이 좋습니다.

관련 문제