2012-02-02 57 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