2013-03-14 5 views
0

J'ai le nombre de catégories que je veux séparer en rangées, le nombre de catégorie dans une rangée sera base sur $catsInLine. Les $catsInLine sont des chiffres de 1 à 12. Chaque catégorie sera enveloppée par DIVs avec la classe de span1 à span 12. Et les catégories seront à nouveau envelopper avec <div class="row-fluid"> pour chaque ligne.Numéros dynamiques de la colonne dans une ligne

J'ai essayé ci-dessous pendant des heures et pas de chance d'obtenir le bon résultat.

<div class="row-fluid"> 
    <xsl:variable name="catsInLine"> 
     <xsl:value-of select="categories_in_line" /> 
    </xsl:variable> 
    <xsl:variable name="column"> 
     <xsl:value-of select="(12 div $catsInLine)" /> 
    </xsl:variable> 
    <xsl:for-each select="categories/category"> 
     <xsl:if test="position() mod $catsInLine = 1 or position() = 1"> 
      <xsl:text disable-output-escaping="yes">&lt;div class="row-fluid"&gt;</xsl:text> 
     </xsl:if> 
     <div class="span{$column}"> 
      <xsl:call-template name="category" /> 
     </div> 
     <xsl:if test="position() mod $catsInLine = 0 or position() = last()"> 
      <xsl:text disable-output-escaping="yes">&lt;&#47;div&gt;</xsl:text> 
     </xsl:if> 
    </xsl:for-each> 
</div> 

supposons que le $catsInLine est 2, le résultat que je souhaite obtenir est

<div class="row-fluid"> 
    <div class="span6"> 
     <a>Category1</a> 
    </div> 
    <div class="span6"> 
     <a>Category2</a> 
    </div> 
</div> 
<div class="row-fluid"> 
    <div class="span6"> 
     <a>Category3</a> 
    </div> 
    <div class="span6"> 
     <a>Category4</a> 
    </div> 
</div> 

si le $catsInLine est 1, le résultat devrait être

<div class="row-fluid"> 
    <div class="span12"> 
     <a>Category1</a> 
    </div> 
</div> 
<div class="row-fluid"> 
    <div class="span12"> 
     <a>Category2</a> 
    </div> 
</div> 
<div class="row-fluid"> 
    <div class="span12"> 
     <a>Category3</a> 
    </div> 
</div> 
<div class="row-fluid"> 
    <div class="span12"> 
     <a>Category4</a> 
    </div> 
</div> 

Répondre

0

S'il vous plaît, essayez ceci:

<xsl:apply-templates select="categories/category[position() mod $catsInLine = 1 or 
               $catsInLine = 1]" 
        mode="row" /> 

<!-- Separate template --> 
<xsl:template match="category" mode="row"> 
    <div class="row"> 
    <xsl:apply-templates 
       select=". | following-sibling::category[position() &lt; $catsInLine]" /> 
    </div> 
</xsl:template> 
+0

la réponse semble ne correspond pas tout à fait à mon code actuel, j'insère tout le code que j'utilisais et espère que vous pouvez réviser votre réponse pour mon – ChongWang87

+0

Pourriez-vous inclure votre XSLT entier si ce n'est pas trop grand? – JLRishe

Questions connexes