2016-10-24 36 views
1

我有一個名爲Account_UserDetails的形狀,我試圖添加某種包裝,因爲它只是顯示爲一堆LI。我需要一個圍繞形狀的包裝來更好地控制它(如UL)。我嘗試了以下內容,但它似乎並未在瀏覽器中顯示。我究竟做錯了什麼?Orchard:向ShapeTableProvider中的形狀添加包裝ShapeTableBuilder

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using Orchard.DisplayManagement.Descriptors; 

namespace Onestop.Themes.LOEH 
{ 
    public class ShapeDataProvider : IShapeTableProvider 
    { 
     public void Discover(ShapeTableBuilder builder) 
     { 
      builder.Describe("Account_UserDetails").OnDisplaying(context => { 
      context.Shape.Wrappers.Add("ul"); 
      }); 
     } 
    } 
} 
+1

我很困惑你爲什麼要創造一個包裝,只是爲了讓所有東西都在UL標籤中。把這個標籤放到模板本身中是不是更簡單? –

+0

我無法訪問形狀本身,只有主題級別上的Placement.info。 –

+0

爲什麼你可以訪問'placement.info',但不能爲形狀添加模板覆蓋? –

回答

1

包裝器,在烏節路的形狀,你可以將它們添加如下:

builder.Describe("Account_UserDetails").OnDisplaying(context => { 
    context.Shape.Metadata.Wrappers.Add("Account_UserDetails_Wrapper"); 
}); 

就應該添加的包裝形狀Account_UserDetails_Wrapper.cshtml

<div> 
    @DisplayChildren(Model) 
</div> 

如果您需要更多有關包裝的信息,請參考link

+0

這就是我想要做的,但它根本不產生這種形狀。它實際上只適用於將以下內容添加到Placement.info文件中: –

+0

Account_UserDetails =「/ Header_Solo_Secondary:2; Wrapper = ListWrapper」/> –

+0

要麼將​​其添加到ShapeTableProvider中,要麼將其添加到placement.info中,您應創建包裝器形狀本身 – mdameer