0

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

您是否可以帮助我解决我在使用 xslt 代码时遇到的问题?我是编程新手,所以我会很感激我能得到的任何帮助。

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

XSLT 如何用 div 包装每 3 个元素?

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

<?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>
4

1 回答 1

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>
于 2013-04-06T19:34:12.490 回答