2013-11-15 106 views
0

來定義備用零件形狀這裏是我的情況...如何在果園

利用果園CMS 1.7.1我已經創建了一個名爲「VistaImage」使用果園UI自定義的內容類型。此內容類型基於媒體庫選取器字段定義一個字段,該字段也被命名爲'VistaImage'。

A投影Vista圖像組作爲Widget引用放置在'精選'區域並且運行良好。

使用結果頁面(S)的外形跟蹤器,形狀層次結構如下所示:

Zone [Featured] 
    Widget 
     List 
      Content       Alt: Content-VistaImage 
      Fields_MediaLibraryPicker Alt: Fields.MediaLibraryPicker-VistaImage 
       Media 
        Parts_Image_Summary 

我想要做的就是向下從內容形態提供可選擇的形狀。對於Content本身和Fields_MediaLibraryPicker來說這很容易(因爲Shape Tracer會自動提供適用的替代方法(如上所述))。

我的問題是爲Media和Parts_Image_Summary部件提供替代品。

在Orchard網站上查看Alternates的文檔,我認爲如果我在/Views/Parts/Image.Summary-VistaImage.cshtml中的主題中創建了一個新形狀,則會引用它,但它會引用不是的(雖然如果我刪除'-VistaImage'的形狀確實會被使用,但是這樣做,我相信每個內容類型都會改變這種形狀,這不是我想要做的)。

任何關於我應該如何處理這個要求的建議/指示都將被採用。

謝謝。

回答

1

從個人的經驗來看,當你在形狀上達到那麼低的水平時,如果有的話,替代品的效果並不好。我最好處理這些場景的唯一方法是選擇上面的下一個適用形狀,並執行if語句以確定是否需要其內容,在這種情況下,可以移除默認形狀顯示並實現自己的硬編碼佈局。

例如,如果形狀simplay說@display(Model.whatever),並且您知道顯示器對您來說是垃圾,請查看模型。

例如,我在創建4級自舉菜單時遇到了麻煩,因爲它通常只處理2個級別,所以我操縱了最低級別的形狀。即:

if{Model.Items.Any()}{ 
    //code to generate another submenu for that menuItem 
} 

這可能不是解決這個問題的最正確的方法,只是我找到的解決方案工作。

所以在你的情況下,我會使用VS調試和斷點來呈現mediafield選擇器,並找出模型是否包含任何讓你知道它是你的VistaImage內容的信息。

+0

謝謝,這一直很有幫助 – Neilski