2014-10-23 4 views
0

안녕에 이미지를 추가 : 오차드 CMS에 대한 나의 다음 질문은 사소한 보이지만 ..오차드 CMS : 다시 한 번 정의 항목

내가 TitlePart 구성 NewsItem 유형, BodyPrt 내 사용자 정의 NewsModule을 가지고 내 사용자 지정 NewsPart . NewsPartNewsPartRecord을 기준으로합니다.

이제 이미지로 NewsItem 문서 유형을 확장해야합니다. 지금까지 나는 ImagePartMediaLibraryPickerField이라는 것을 발견했습니다. ImagePart은 이미지의 widthheihgt을 저장하므로 내부 용으로 생각합니다.

다음은 MediaLibraryPickerField입니다. 검색을 한 후, NewsPartWithField() 방법으로 확장 할 수 있음을 알게되었습니다. 하지만! 먼저 질문 : 관리자 UI로 Page 유형을 구성 할 때 type에 필드를 추가 할 수 있습니다. 하지만 Migrations을 사용하면 에 필드를 추가 할 수 없으며 NewsPart에만 필드를 추가 할 수 있습니다.

여기 두 번째 질문입니다. MediaLibraryPicker를 사용하면 라이브러리, 이미지, 텍스트, zip 또는 기타 파일에서 모든 유형의 파일을 선택할 수 있습니다. 그리고 이것은 제가 실제로 필요한 것이 아닙니다.

아이콘으로 항목을 확장하는 오차드의 베스트 프랙티스는 무엇입니까?

감사합니다.

+1

관리자 UI에서'type'에 필드를 추가하면 orchard는'type'과 같은 이름의 새'part'를 만듭니다. 그래서 첫 번째 질문이 해결되고 'Part'에만 필드를 추가 할 수 있습니다. – teran

+0

한 번에 하나씩 질문해야합니다. 두 가지 질문은 단지 한 가지 질문에 대한 답을 줄뿐 아니라 게시물을 덜 효율적으로 움직일 수있게 해줍니다. 미디어 선택기 필드에는 선택할 수있는 미디어 콘텐츠 형식을 제한하는 설정이 있습니다. –

답변

2

NewsItem에 필드를 추가 할 수 있습니다. 다른 유형의 정의 만 있으면됩니다. 그것은 당신이 원하는 것처럼 직관적이지 않기 때문에 나도 혼란스럽게 만들었습니다.

사용중인 부품을 추가하려면 AlterTypeDefinition. 당신은 또한 AlterPartDefinition를 사용하고 NewsItem을하지 NewsPart를 지정할 수있는 필드를 추가하는 그러나

this.ContentDefinitionManager.AlterTypeDefinition(
    "NewsItem", 
    cfg => cfg.WithPart("NewsPart")); 

.

this.ContentDefinitionManager.AlterPartDefinition(
    "NewsItem", 
    builder => 
     builder.WithField(
      "NewsImages", 
      fieldBuilder => 
       fieldBuilder.OfType("MediaLibraryPickerField") 
       .WithDisplayName("News Images") 
       // Allow multiple images 
       .WithSetting("MediaLibraryPickerFieldSettings.Multiple", "true")) 

두 번째 질문을 고려할 때 MediaLibraryPickerField에는 선택한 유형/부품 만 표시 할 수있는 옵션이 있습니다.

.WithSetting(MediaLibraryPickerFieldSettings.DisplayedContentTypes="Document,Video") 

당신은 새로운 미디어는 스테레오 "미디어"새로운의 ContentType을 만들 필요가 입력해야하는 경우, 그것은 또한 "MediaPart"및 해당 유형에 대한 메타 데이터를 정의하는 부분이 필요합니다. 문서 또는 비디오이 샘플 코드로 정의 된 방법을 확인할 수 있습니다.

+0

'Part'에'MediaLibraryPickerField'를 추가하는 것은 물론 명백합니다. 문제가 아닙니다. 첫 번째 부분에서는'Type'에 필드를 추가하는 방법에 대해 질문했지만, 나는 그것이 불가능하다는 것을 이미 발견했습니다. 두 번째 부분을 고려해 볼 때, 이전에 'DisplayContentTypes'에 대해 읽지는 않았으므로 감사합니다. 꼭 필요한 것 같습니다. – teran

+0

이미지를 필터링하기 위해'DisplaydContentTypes' 값을 사용해야합니까? 'Image'를 시도했지만 작동하지 않습니다. 소스 코드에서 이것을 찾을 수 없습니다. – teran

+0

당신이 나를 이해하지 못 했으므로, 'AlterPartDefinition'을 통해'Type'에 필드를 추가 할 수 있습니다. 이름으로 혼란스럽고 유형을 입력하는데도 사용할 수 있습니다. 부품의 첫 번째 매개 변수 이름으로 사용하지 말고 일명 "NewsItem"유형의 이름으로 지정하십시오. 나는 그걸 어떻게 넣어야할지 모르겠다. – Xeevis

관련 문제