2012-03-16 1 views
2

오차드에서 this layout을 재현하려고합니다. 지금까지, 나는 나의 블로그 포스트 상세 (Content-BlogPost.Detail.cshtml)을 위해 대체물을 사용함으로써 대부분의 것들을 해결했다.Orchard 대체 구역에서 영역이나 위젯을 어떻게 렌더링합니까?

enter image description here

내 첫 번째 질문은,이 레이아웃이 이해가 않습니다됩니다 : 문제는 내가 만든 레이아웃 이런 식으로 뭔가를 보이는 것입니다? 이 결과를 얻는 더 좋은 방법이 있습니까 (즉, 아카이브와 함께 내용을 표시하는 방법)?

둘째, 내 대체 내부에서 영역 (또는 위젯)을 렌더링하는 방법이 있습니까? @Display(Model.Archives)을 시도했는데, Archives이 내 영역의 이름이지만, 분명히 블로그 세부 모델은 Archives 속성을 정의하지 않습니다. 또한 수동으로 블로그 아카이브 셰이프를 호출하는 것을 고려했습니다.

@Display(New.Parts_Blogs_BlogArchives(new { Blog: blog, Archives: ???}) 

그러나 두 번째 인수를 채우는 방법을 모르겠습니다.

오차드에서이 레이아웃을 만드는 올바른 방법은 무엇입니까?

답변

7

이 레이아웃의 주된 문제점은 아카이브 영역이 블로그 게시물의 마크 업 내에 위치한다는 것입니다. 그것은 일을 더 어렵게 만듭니다. 그러나 불가능한 것은 아닙니다.

해결 방법은 말한 것처럼 대체 구역 내부의 전체 레이아웃 영역을 렌더링하는 것입니다. @Display(Layout.Archives)과 같이 모든 모양의 기본 최상위 레이아웃 영역을 표시 할 수 있습니다. Layout은 기본 레이아웃 모양에 대한 액세스를 제공하는 속성입니다.

나는 이런 식으로 할 거라고 :

  1. 블로그 아카이브 위젯에 대한 자리가 될 것이다 Theme.txt 매니페스트 파일 (영역 섹션)의 영역이라고 아카이브를 추가합니다. 이 아닌Layout.cshtml 파일로 렌더링하십시오. 이 영역은 블로그 게시물 용도로만 사용됩니다 (이 사실을 알기 위해 다른 이름을 지정할 수도 있음).
  2. 블로그 게시물에 대한 대체 모양을 만들고, 적절한 장소에 Display(Layout.Archives)으로 전화하십시오. 그러면 전체 영역이 블로그 게시물 마크 업으로 렌더링됩니다.
  3. 블로그 보관함 위젯을 보관함 영역에 보관하십시오.

이제 블로그 게시물이 렌더링 될 때마다 아카이브 위젯도 렌더링됩니다.

+0

굉장합니다. 나는 과수원에 관한이 모든 것을 어디에서 배울 수 있습니까? 더 깊게 갈수록 배우는 것이 더 많아집니다. :) – Ragesh

+1

문서 및 실무 경험이 가장 좋은 방법입니다. –

+3

재미있는 일을하는 기존 모듈의 코드를 들여다보십시오. –