2016-04-01 55 views
0

我正在嘗試創建一個輪播並且我想要它是可從經驗編輯器配置爲。通過可配置我的意思是可以編輯圖像,文字和添加/或刪除幻燈片。在獨立佔位符中呈現項目

第一次創建旋轉木馬時,我可以添加/刪除幻燈片,但沒有保存並再次打開後,在渲染旋轉木馬後我無法移除一張幻燈片,因爲它們都是同一佔位符的一部分(I可以繼續添加新幻燈片並刪除新幻燈片,但不是舊幻燈片)。

我有Carousel.cshtml和CarouselSlide.cshtml和代碼的樣子:

Carousel.cshtml

<div class="carousel"> 
    @foreach (Item slide in Model.Item.Children) 
    { 
     @Html.Action("CarouselSlide", "MediaFeature", new { model = slide }); 
    } 

    @Html.Sitecore().DynamicPlaceholder("slides") 

</div> 

CarouselSlide.cshtml

<div class="carousel-slide"> 
    <div class="carousel-slide-content"> 
     @Html.Sitecore().BeginField(....) 
      <div class="background-image"> 
        ..... 
      </div> 

      <div class="text-container"> 
        .... 
      </div> 
     @Html.Sitecore().EndField() 
    </div> 
</div> 

到目前爲止,這個問題看起來像與佔位符相關。有關如何呈現DynamicPlaceholder的任何想法?

EDIT

「幻燈片」 佔位符被配置爲僅允許CarouselSlide部件

+0

您是否將幻燈片組件逐個添加到幻燈片佔位符中?或者,您是否有幻燈片數據模板,其中用戶正在選擇幻燈片以添加到幻燈片容器項目,並且您將幻燈片容器項目選擇爲來自您的傳送帶組件的數據源? –

+0

@dnstommy我正在從體驗編輯器 – Melvinr

+0

一個接一個地添加它們。你有沒有在這裏檢查動態佔位符上的doco。你的佔位符應該在它們的最後有guid。 https://marketplace.sitecore.net/en/Modules/I/Integrated_Dynamic_Placeholders.aspx –

回答

0

卸下foreach循環。這是沒有必要的。當Sitecore呈現佔位符時,它爲您呈現之前添加的幻燈片。處於編輯模式時,它還呈現允許您添加其他組件的容器。

使用動態佔位符可以讓您在頁面上擁有多個Carousel組件。或者更確切地說,多個組件包含一個帶有「幻燈片」鍵的佔位符。這很可能不會導致您在幻燈片中看到的問題。

更新 - 由OP

它看起來像你做了什麼要求額外信息是混用兩種不同風格的發展。其中之一就是將轉盤項目的子項顯式渲染爲幻燈片。第二種方法是依靠Sitecore的表示引擎將組件動態地呈現爲佔位符,該佔位符可以使用樹中其他位置的數據源。您需要選擇其中一個,但第二種方法通常是首選

要使用第二種方法,你只需刪除foreach循環,使你的旋轉視圖看起來是這樣的:

<div class="carousel"> 
    @Html.Sitecore().DynamicPlaceholder("slides") 
</div> 

如果你決定去與第一種方法,你會刪除佔位符,然後添加自定義體驗按鈕,以便您可以在您的輪播項目下插入和排序子項目。

使用這兩種方法,您可能會發現頁面編輯器無法在您的Carousel javascript中發揮出色。解決此問題的最常見解決方法是在頁面編輯器模式下將輪播渲染爲平面列表。

+0

當我需要渲染現有幻燈片時,使用foreach循環。 例如:我在主頁上創建了一個傳送帶,我想在另一個頁面中重新使用這個傳送帶(當然包括幻燈片),所以我需要一個循環來渲染現有的幻燈片 – Melvinr

+0

您不需要那樣做。佔位符爲你做。 –

+0

我不明白你的意思,你能否請你更新你的答案,代碼應該如何。我認爲你說的只有在我沒有渲染項目列表(幻燈片)的情況下才有效,但是隻有一個特定佔位符的項目 – Melvinr