1

我一直在尝试迭代 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 框架方法?

4

1 回答 1

3

由于您的每个选项卡都将包含相同的渲染,因此我不会打扰占位符。我认为您将增加比所需更多的复杂性。

假设您将使用jQuery UI Tab 插件,那么我将使用您在上一个问题中使用的相同技术,即在转发器中渲染 div 选项卡的内容,您将需要另一个转发器来创建ul实际选项卡的列表。

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

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

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

如果您想要更动态的东西,例如每个选项卡的不同呈现方式,例如一个带有富文本、一个带有 2 列、一个带有表格等,那么还有几种方法可以实现这一点。一种方法是<asp:PlaceHolder>在转发器中使用标准,并在 ItemDataBound 事件上从代码隐藏中添加渲染。

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

<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. 现在在元素上调用 jQuery UI Tabs

希望至少给您一些选项,如果您需要,我可以扩展其中的任何一个,但必须将一些代码示例放在一起。

于 2013-05-28T04:27:41.003 回答