按行分组div(需要澄清)

时间:2013-04-05 07:30:00

标签: xslt sitecore

我意识到你真的擅长编程,你的答案是可靠的。

您是否有可能协助我解决我的xslt代码问题?我是程序员的新手,所以我很感激我能得到的任何帮助。

您可以在下面的链接中找到连续分组3个div的解决方案,但我不知道如何将其应用于我的代码。我正在使用Sitecore,我有一个div块,对应于生成的每个页面,以生成类似地铁的块,连续3个。到目前为止,我生成了所需的div,但没有连续三​​个。我的代码见下文。

XSLT How can I wrap each 3 elements by div?

我很感激能得到的任何帮助。

<?xml version="1.0" encoding="UTF-8"?>

<!--=============================================================
    File: ServicesFeatureblocks.xslt                                                   
    Created by: sitecore\admin                                       
    Created: 3/27/2013 11:50:57 AM                                               
    Copyright notice at bottom of file
==============================================================-->

<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:sc="http://www.sitecore.net/sc"
  xmlns:dot="http://www.sitecore.net/dot"
  exclude-result-prefixes="dot sc">

    <!-- output directives -->
    <xsl:output method="html" indent="no" encoding="UTF-8" />    

    <!-- parameters -->
    <xsl:param name="lang" select="'en'"/>
    <xsl:param name="id" select="''"/>
    <xsl:param name="sc_item"/>
    <xsl:param name="sc_currentitem"/>

    <!-- variables -->
    <!-- Uncomment one of the following lines if you need a "home" variable in you code -->
    <xsl:variable name="Services" select="sc:item('/sitecore/content/home/Services',.)" />
    <!--<xsl:variable name="home" select="/*/item[@key='content']/item[@key='home']" />-->
    <!--<xsl:variable name="home" select="$sc_currentitem/ancestor-or-self::item[@template='site root']" />-->    

    <!-- entry point -->
    <xsl:template match="*">
        <xsl:apply-templates select="$sc_item" mode="main"/>
    </xsl:template>

    <!--==============================================================-->
    <!-- main                                                         -->
    <!--==============================================================-->

    <xsl:variable name="group" select="3" />

    <xsl:template match="/">
        <xsl:apply-templates select="$sc_currentitem[position() mod $group = 1]" />
    </xsl:template>

    <xsl:template match="item" mode="inner">
        <div class="block orange">
            <xsl:value-of select="sc:fld('Title',.)" />
        </div>

        <item/>    

    </xsl:template>

    <xsl:template match="item">
        <div>
            <xsl:apply-templates
                select="./item|following-sibling::services/item[position() &lt; $group]" mode="inner" />

        </div>
    </xsl:template>

</xsl:stylesheet>

1 个答案:

答案 0 :(得分:0)

如果您可以使用子布局而不是xslt渲染,则可以使用Listview与GroupTemplate轻松实现您的功能

<asp:ListView ID="listview1" runat="server" GroupItemCount="3" GroupPlaceholderID="groupPlaceholder"
                ItemPlaceholderID="itemPlaceholder">
                <LayoutTemplate>
                    <div class="productsContent">
                        <asp:PlaceHolder ID="groupPlaceholder" runat="server"></asp:PlaceHolder>
                    </div>
                </LayoutTemplate>
                <GroupTemplate>
                    <div class="product-rows">
                        <asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder>
                    </div>
                </GroupTemplate>
                <ItemTemplate>
                    <div class="products">
                    </div>
                </ItemTemplate>
</asp:ListView>