16
Jul
11
Manipulating every Nth item in a <% control %> loop
Often you will want to manipulate every nth item inside a <% control %> loop. For example say you had a gallery and you wanted every 3rd image to start on a new line, you need to be able to test each item from the template to see if it is divisible by 3 and should therefore have the clear CSS class added to it.
Using iteratorPos % we
can very easily achieve this. First we need to add the test function to
the object we will be iterating through, so for example if you are
iterating through a number of ImageItem DataObjects, we would add this
function to our ImageItem class:
The % operator calculates the modulous or Remainder after dividing by the number that follows it (in this case 3). If there is a remainder then we know that the item is not divisible by 3 and so should not be cleared, but if the modulous is equal to 0 then we know it is divisible by 3 and should therefore clear a new line.
We can now use <% if IsThird %> to clear the third image in our control loop like so:
About the Author
Name: Aram Balakjian
Website: http://www.aabweb.co.uk
Aram is a web designer/developer running London based agency aab web. He has a strong passion for developing attractive, usable sites around the SilverStripe CMS.
Comments (1)
-
Does this work any better?
return ($this->iteratorPos % 3) == 0;
Posted by Pete Bacon Darwin, 16/07/2009 7:07am (1 year ago)
« previous 1 2
RSS feed for comments on this page RSS feed for all comments