Umbraco에서 편집자를위한 계층 적 관계를 유지할 수있는 몇 가지 다른 문서 유형을 설정했습니다. 따라서 문서 유형 B의 "하위"를 허용하도록 문서 유형 A를 구성했습니다. 또한 문서 유형 C의 "하위"를 허용하도록 문서 유형 B를 구성했습니다.Umbraco에서 부모/자식 콘텐츠 관계 다루기
보기의 목록에서 나는 유형 A의 특정 조상을 공유하는 유형 C (즉, 유형 B의 직계 상위 항목은 무의미 함). I 컨트롤러이 같은 코드를 사용
var rootChildren = Umbraco?.TypedContent(RootId)?.Children;
var items = rootChildren
.SelectMany(rc => rc?.Children?
.Where(c => c != null
&& c.GetPropertyValue<Boolean>(FieldNames.SomeValue)));
var viewModels = allItems.Select(p => new SomeViewModel
{
// Object initialization code
});
return viewModels.ToArray();
RootId
값이 ConfigurationSection
로부터 판독되며, 따라서 변경 될 수 있거나 또는 서로 다른 환경에서 비 - 동일.
내 단점은 내 코드가 백 오피스의 편집자를 위해 설정 한 내용과 얽혀 있다는 것입니다. IEnumerable<IPublishedContent>.DescendantsOrSelf(SomeDocumentTypeAlias)
과 같은 "소프트"선택 방법을 사용하여 부분적으로 해결할 수 있다고 생각합니다. (어떤 문서 유형에 묶여 있다고 가정하면 CMS와 함께 작업 할 때 번거롭고 번거롭지 않은 업무라고 생각합니다.)
DescendantOrSelf
과 같은 "소프트"선택 방법은 어떤 문제를 해결하지 못합니다. 노드를 시작점으로 사용합니다. 사이트 루트에는 유형 A 콘텐츠가 여러 개있을 수 있으므로이 유형의 문서 유형으로는 이동할 수 없습니다.
또한 노드 ids는 Umbraco에서 개발자와 다른 환경 사이에서 내용을 공유하는 것으로 예상 할 수 없기 때문에 버전 제어 관점에서 완벽하지는 않기 때문에 구성을 기반으로 한 솔루션에 전혀 만족하지 않습니다.
ASP.NET MVC 등을 잘 알고 있지만, Umbraco의 모범 사례에 대해서는 아직 많이 알지 못합니다. 그래서 이것이 제가 묻고있는 것입니다. Umbraco 개발자로서 어떻게 경험 해보시겠습니까?
의견을 보내 주셔서 감사합니다. 편집 환경에 이미 몇 가지 구성 옵션이 있습니다. 노드 선택 도구를 추가하면 좋은 제안처럼 보입니다. 나 또한'OfTypes()'옵션을 사용했다. 그것이 문제가된다면 나는 그것을 다루 겠고, 그것이 제공하는 유연성이 바람직하다. –