2012-02-02 53 views
2

我想在Umbraco 4.7.1中創建嵌套母版頁,我遇到了問題。Umbraco嵌套主頁

我有一個母版doctype和一個索引doctype,它是母版頁的子項。

然後我有一個單獨的文檔稱爲幻燈片放映。

我的內容是這樣的:

  • 指數
    • 幻燈片

我的母版頁模板有這樣的參考指數:

<asp:ContentPlaceHolder ID="Content" runat="server" /> 

則索引內我的代碼是

之間
<asp:Content ContentPlaceHolderID="Content" runat="server"> 
    </asp:Content> 

和索引模板內我參考下一級是一個圖像滑塊

<asp:ContentPlaceHolder ID="SlideShow" runat="server" /> 

和幻燈片模板具有

<asp:Content ContentPlaceHolderID="SlideShow" runat="server"> 
    </asp:Content> 
之間碼

它適用於索引,但不適用於幻燈片。

我能想到的唯一區別就是索引的文檔類型實際上是主文檔的子類型。而SlideShow doctype實際上是它自己的文檔類型。不是他們中的任何一個的孩子。

任何想法如何讓這個工作?

回答

5

在Umbraco中嵌套的頁面是非常好的。事實上,它實際上是一個ASP.Net機制,它不一定與Umbraco中的任何血腥症有關。所以可能有獨特的Umbraco文檔類型不相互繼承,但一個主模板嵌套在另一箇中。

主模板以主模塊不指定哪些模板從中繼承的方式工作,它始終是引用主模板的子模板,很像面向對象的編程語言中的繼承。子標記中的<asp:Content />標記指定從父級使用哪個<asp:ContentPlaceHolder />

我有點困惑你如何從描述中設置主模板,但你應該嘗試讓它像下面的設置...

根主模板:

<asp:ContentPlaceHolder ID="Content" runat="server" /> 

指數主模板:

<asp:Content ContentPlaceHolderID="Content" runat="server"> 

    <!-- your html --> 

    <asp:ContentPlaceHolder ID="IndexLeft" runat="server" /> 

    <!-- your html --> 

    <asp:ContentPlaceHolder ID="IndexRight" runat="server" /> 

    <!-- your html --> 

</asp:Content> 

幻燈片主模板:

<asp:Content ContentPlaceHolderID="IndexLeft" runat="server"> 

    <!-- your html --> 

</asp:Content> 
<asp:Content ContentPlaceHolderID="IndexRight" runat="server"> 

    <!-- your html --> 

</asp:Content> 

,只要你想你可以創建許多嵌套的模板,神智-permitting。製作文檔類型使用模板Index將不包含幻燈片放映。您需要改爲使用Slide Show模板。

這裏有一個關於它的詳細信息:http://msdn.microsoft.com/en-us/library/ie/x2b3ktt7.aspx

希望它能幫助。

+0

那麼,如果我想擁有多個嵌套模板。 像你的鏈接節目。 Content1和Content2。我顯然不能給doctype兩個模板。 – Bill 2012-02-03 22:37:59

+0

是的,這也很好。我更新了答案以顯示多個嵌套模板。子模板是** only **實體,負責爲所有主模板的ContentPlaceHolders提供內容。有一點需要說明的是,主模板與您在其他技術中找到的「包含」不一樣,這就是Umbraco宏的用途。 – 2012-02-04 00:01:48

+0

謝謝。這就說得通了! – Bill 2012-02-06 07:41:33