Umbraco groupings based on item counts: Using mod and non-validating html output.

I feel this is a common problem that umbraco users need to overcome: Groupings based on item counts.
Scenario separate nodes into lists of 6 output:

<ul class="groupof6"> 
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
<ul class="groupof6"> 
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
<li>11</li>
<li>12</li>
</ul>

To allow this to happen, when a factor six occurs output the following:

<xsl:if test="position() mod 6 = 0 ">
</ul><ul class="groupof6"> 
</xsl:if>

This is non validating xml which is a no-no when it comes to the xslt validator.

<xsl:text disable-output-escaping="yes"><![CDATA[</ul><ul class="groupof6">]]></xsl:text>

As a whole it should work like this:

//output list start
//loop
// output list item
//if mod
//output group break
//end if
//end loop
//output list end

There you have it! A simple way of breaking lists into groups by using mod and xsl:text.

Leave a comment