내 사이트에 몇 가지 스타일/템플릿이 있습니다. 이 템플릿은 모두 내 사이트의 모든 작품에 사용됩니다. 다음은 내 문서 유형의 예입니다.Umbraco에서 동적 합성 모델의 속성에 액세스 할 수 있습니까?
Layouts (folder)
Style 1
Style 2
Style 3
Products (folder)
ProductsPage
Product
News (folder)
NewsOverview
NewsPage
기본적으로 모양이 같습니다. 이들 모두는 Product
및 NewsPage
을 제외한 템플릿을 가지고 있지만, 이들은 조성물로서 Style X
을 갖는다. 내 콘텐츠 노드 모양은 다음과 같습니다.
Home
Products
Product 1 (Style 2)
Product 2 (Style 3)
Product 3 (Style 2)
Product 4 (Style 1)
News
Article 1 (Style 1)
Article 2 (Style 3)
등등. 너는 요점을 알아 내지? Style X
문서 유형은 모두 작곡이므로 동일한 페이지를 반복해서 반복 할 필요는 없지만 원하는 스타일의 페이지를 만들 수 있습니다.
이제 부모님 (예 : NewsOverview
)에서 자녀의 속성에 액세스하고 싶습니다. NewsOverview
템플릿 파일의 내부에서, 나는 다음이해야 할 것 : 내 모델이 DLL이 설정되어 있지만
@foreach(var article in Model.Content.Children) {
dynamic image = article;
<img src="@image.OverviewImage[0].Url" />
<p>@article.GetPropertyValue("overviewTitle")</p>
}
내가 문자열을 사용 또는 동적 (기본적으로)에 캐스팅없이 속성에 액세스 할 수없고 나는 보통 Model.Content.PROPERTY
을 수행 할 수 있습니다 인텔리 센스 등등.
어떻게하면됩니까? 동적 속성을 사용하지 않고 속성에 액세스하려면 어떻게해야합니까? 나는 아이들이 반드시 똑같은 것은 아니라는 것을 이해합니다. 그러나 모든 스타일이 지정된 페이지에는 동일한 속성이 포함되어 있습니다. 템플릿은 템플릿에서 다르게 배열됩니다. 때문에,
@using ContentModels = Umbraco.Web.PublishedContentModels;
@foreach (var article in Model.Content.Children.Select(child => new ContentModels.NewsPage(child)) {
<img src="@article .OverviewImage.First().Url" />
<p>@article.OverviewTitle</p>
}
.Children()
단지 형 IPublishedContent
의 아이를 가져옵니다
제품 1 (스타일 2)의 의미를 알 수 없습니다. 당신은 제품 노드를 만들었습니다. (작곡에는 style1-2-3의 모든 속성이 있습니다) 그리고 스타일 2 만 채웠습니까? – Eyescream
@Eyescream 다른 스타일과 기본적으로 같은 속성을 가진'Style 1'이라는 doctype이 있습니다. 유일한 차이점은 템플릿입니다. 사용자 (나)가 각 페이지에 사용할 템플릿을 선택할 수 있기를 바랍니다. 어떤 페이지는 다른 텍스트보다 더 많은 텍스트를 가질 수 있고, 더 많은 이미지와 다른 이미지 등을 가질 수 있습니다. '스타일 1'은 템플릿이있는 단순히 doctype이며, 'Product' doctype에 대한 구성입니다. – MortenMoulder
하나의 DocType 권한에 여러 템플릿을 할당 할 수 있다는 것을 알고 계십니까? 그런 다음 하나의 페이지를 만들 때 사용할 페이지를 선택하십시오. 새로운 템플릿을 갖기 위해 새로운 DocType이 필요하지 않습니다. 당신이 제대로 질문하는 것을 이해한다면, 아니오, 당신은 구성된 doctypes에서 여러 템플릿을 사용할 수 없습니다. 상위 doctype의 템플리트 만 사용됩니다. 컴포지션은 Model Builder의 인터페이스 일뿐입니다. –