迭代Sitecore占位符

时间:2013-05-28 00:01:34

标签: c# asp.net sitecore

我一直在尝试迭代sitecore中的占位符。从本质上讲,页面需要为元素集合(例如选项卡)重复控制。我只让占位符渲染一次。以下选项卡中没有插入内容。

我正在尝试做的事情的代码是:

<asp:Repeater ID="rptTabs" runat="server">
    <sc:Placeholder ID="plSocialSharing" runat="server" Key="Social"/>
    <sc:Placeholder ID="plTab" runat="server" Key="content"/>
</asp:Repeater>

应该像我正在做的事情一样吗?如果没有,我是否需要使用另一个sitecore控件(更动态的东西?)。我是应该使用用户控件放在那里,还是应该坚持使用sitecore框架方法?

1 个答案:

答案 0 :(得分:3)

由于每个选项卡都包含相同的渲染,因此我不会理会占位符。我认为你会增加所需的复杂性。

假设您将使用jQuery UI Tab plugin,那么我将使用您在previous question you asked中使用的相同技术,即渲染转发器中div选项卡的内容,您将需要另一个转发器,用于创建实际标签的ul列表。

假设您有一个树结构,如:

- Social Sharing
-- Facebook
-- Twitter
-- Email

您现在可以Social Sharing用作Repeater的数据源,并且如果您使用Sitecore控件,仍然允许标签的内容可编辑。

如果你想要一些更动态的东西,比如每个标签的不同渲染,例如一个带有富文本,一个带有2列,一个带有表等,那么有两种方法可以实现这一点。一种方法是在转发器中使用标准<asp:PlaceHolder>,并在ItemDataBound事件的代码隐藏中添加渲染。

另一种选择是在页面编辑器中的占位符中添加一堆不同的渲染,并将每个渲染的数据源设置为内容项。使用jQueryUI Tabs很困难,因为你想在每个控件中使用这样的标记来使它们自包含:

<div class="tab-title">Tab Title</div>
<div class="tab-content">Put whatever content you want in here</div>

只要每个渲染都遵循这个结构,那么很容易将其中的几个添加到页面中,并且它们仍然可以在页面编辑器中编辑,尽管在编辑模式中一个接一个地列出(不是以制表格式)。您需要滚动自己的标签插件,但它可以是简单的:

  • 仅限预览或普通模式
    1. 获取所有.tab-title元素
    2. 创建ul列表并添加到标签容器
    3. 现在调用元素
    4. 上的jQuery UI选项卡

希望至少给你一些选择,如果你需要的话,我可以扩展其中的任何一个但是必须一起得到一些代码样本。