2012-01-20 2 views
1

내가각 하위 항목을 가져 오기과

Home 
    -ChildOne 
    -ChildTwo 
    -ChildThree 

내가 모든 하위 항목을 통해 루프를 원하는 개별 sublayouts를 사용하여 표시 sitecore의 CMS에서 상위 항목과 세 개의 하위 항목을 가지고 말할 수 있습니다 표시됩니다.

이 작업이 가능하며이를 수행하기 위해 수행해야하는 작업은 무엇입니까?

지금은 하나의 항목을 한 자리 표시 자로 표시 할 수 있지만 리피터를 사용하여이 작업을 수행하려고합니다.

내 최선의 선택은 무엇입니까? 이것은 실제로 가능합니까? 당신이 나에게 제안 할 수있는 방법으로 무승부가 있습니까?

답변

2

Sitecore의 <sc:sublayout ... /> 컨트롤을 사용하면이 작업을 수행 할 수 있습니다.

먼저 데이터 소스 항목에 액세스하기 위해 각 하위 레이아웃을 만들어야합니다. Here is sample code I've blogged on the topic.

다음, 당신은 아이들을 통해 반복하고 데이터 소스로의 각 항목을 통과하면서 sublayout 컨트롤에 바인딩해야합니다

프런트 엔드 :

<asp:Repeater ID="myRepeater" OnItemDataBound="myRepeater_ItemDataBound" runat="server"> 
    <ItemTemplate> 
    <sc:sublayout ID="scSublayout" Path="path/to/your/sublayout/file.ascx" runat="server" /> 
    </ItemTemplate> 
</asp:Repeater> 

코드 숨김을 :

// in the Page_Load 
myRepeater.DataSource = homeItem.GetChildren(); 
myRepeater.DataBind(); 

protected void myRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    { 
    var scSublayout = e.Item.FindControl("scSublayout") as Sitecore.Web.UI.WebControls.Sublayout; 
    if (scSublayout != null) 
    { 
     scSublayout.DataSource = ((Sitecore.Data.Items.Item)e.Item.DataItem).ID.ToString(); 
    } 
    } 
} 
+0

이 항목을 시도해 보면 약간의 발견이 올 것입니다. – Anicho

+1

위대한 - 당신은 중계기를 이해하고''템플릿을 제어 할 수 있지만 그렇지 않다면 명확하게 설명 할 것입니다. –

+1

질문이 하나만 있습니다. 1) 예, 레이아웃 또는 페이지의 다른 하위 레이아웃. 너는 선택이야. –

1

질문의 표현에서 모든 유형의 아이 항목을 표시 할 수 있어야합니다. 여기서 어려움을 겪으면 각 어린이를 표시하는 데 사용할 하위 레이아웃을 결정하게됩니다.

Sitecore는 하나의 하위 레이아웃에 항목을 바인딩하지 않습니다. 첫 번째로 하위 레벨에 바인딩 된 전체 하위 레이어를 가질 수 있습니다. 둘째 하위 레벨에 바인딩 된 하위 레벨은 항목 레벨에서 지정됩니다 (템플릿 표준 값에 기본 프리젠 테이션 세부 정보를 설정할 수 있지만 항목 자체로 재정의 할 수 있음). 항목은 보려는 장치 컨텍스트에 따라 서로 다른 하위 레이아웃이 바인딩 될 수 있습니다. 상위 항목에서 반복 할 때 단일 하위 레이아웃을 사용하도록 항목을 구성하는 방법을 찾지 못하면 가능성이 있습니다 매우 어수선하고 (많은 서브 레이어들이 풀리고, 렌더링되고, 중첩되어 있고, 같은 자리 표시자를 태깅하는) 또는 예외적으로 융통성이없는 것 (아이템은 오직 하나의 서브 레이아웃을 가질 수 있으며,이 서브 레이아웃은 어떻게 행동 할 수 있는지에 제한되어 있습니다).

더 나은 접근 방법은 형제와 함께 표시 될 때 표시하려는 각 항목 유형에 대해 정확히 판단하는 것입니다. 당신이 각 품목에서 유사한 정보를 찾고 있다면이 정보를 가져다가 모든 품목이 어느 정도 수준에서 파생되는 (왜냐하면 그들은 모두 공통 분야를 가짐) 템플리트의 기반으로 사용할 수 있습니다. 그런 다음 루핑을 수행하는 서브 레이 아웃을 작성하고 리피터와 같은 것을 사용하여 각 항목에 대해 동일한 필드를 가져올 수 있습니다.

항목이 근본적으로 다른 경우 반복되는 하위 레이아웃은 다른 사례를 일치시키고 각 사례에 대해 관련 렌더링을 포함하거나 사용할 수 있어야합니다.

희망이 있습니다.

관련 문제