UBB.Dev
Posted By: Myke Smarty section loop indexing - 01/05/2007 5:43 AM
I'm trying to update the postlist template so that my subforums are displayed in two columns, rather than one. With 10+ subforums its a pain to have to scroll down to the posts below.

I'm stepping through the array 2 elements at a time, and the template essentially looks like:

Code
{section name="fora" loop=$subforum step=2}
<tr>
<td>processing $subforum[fora] stuff</td>
<td>processing $subforum[fora+1] stuff</td>
</tr>

{/section}

so the 1st-column index is fora and the 2nd-column index is fora+1. But, the fora+1 doesn't seem to work in the template.

Is there a way to index the array in this fashion? Or perhaps another way to setup a {section} loop with a step of 1 and get a two-column table layout?

There's a very real possibility that I'm not allowed to use the index in this way, so an alternative I've yet to try is to use the cycles function.

Any ideas on the matter would be aprpeciated.
Posted By: Ian Spence Re: Smarty section loop indexing - 01/05/2007 6:19 AM
well, this is cheating but

Code
{section name="fora" loop=$subforum}
{if $smarty.section.fora.iteration % 2 == 1}
<tr>
<td>{$subforum[fora]}</td>
{else}
<td>{$subforum[fora]}</td>
</tr>
{/if}
{/section}

This causes an issue though when you have an odd number of subforums, as you'd need to add an empty cell at the end
Posted By: Gizmo Re: Smarty section loop indexing - 01/05/2007 9:07 AM
empty cells make baby jesus cry...
Posted By: Myke Re: Smarty section loop indexing - 01/05/2007 11:58 AM
Thanks Ian, the 'if' statements did the trick. For a sample, look at one of my forums: http://virtuafighter.com/forums/ubbthreads.php/ubb/postlist/Board/15/page/1


The template code structure I used was as follows:

Code

{section name="fora" loop=$subforum}

{* Subforum row start only at the beginning of col 1 *}
{if $smarty.section.fora.iteration % 2 == 1}
<tr>
{assign var=row_open value=1}
{/if}

<td>{$subforum[fora]}</td>

{* Subforum row end only at the end of col 2 *}
{if $smarty.section.fora.iteration % 2 == 0}
</tr>
{assign var=row_open value=0}
{/if}

{/section}

{* If Subforum ends in col 1, then blank the last cell in col 2 *}
{if $row_open}
<td colspan=5 class="forumtitle"> </td></tr>
{/if}



To prevent the empty cell in the event that the subforum table ends in the first column, I just maintained a variable called $row_open, which is set to true or false with each and . Once the section loop exits, I just check to see the row is still open, and if so, I close it with a single cell spanning 5 columns.

Cheers.
Posted By: chillin Re: Smarty section loop indexing - 01/06/2007 7:44 AM
Originally Posted by Gizmo
empty cells make baby jesus cry...
bigshock that they do, that they do.
© UBB.Developers