Page 1 of 1

sidebar.tpl: SMARTY expression "every second item"?

Posted: Sat Nov 28, 2009 1:19 pm
by aschlemmer
Hi!

My current left sidebar section in sidebar.tpl reads like this:

Code: Select all

{if $pluginside == 'Left'}{foreach from=$plugindata item=item}{if $item.class == "serendipity_categories_plugin"}<div class="container_category"><a id="sectionmenu"></a>
	{elseif $item.class == "serendipity_plugin_staticpage"}<div class="container_staticmenu">
	{else}<div class="serendipitySideBarItem announce container_{$item.class}">
	{/if}
	{if $item.title != ""}<h2 class="serendipitySideBarTitle {$item.class}">{$item.title}</h2>{/if}<div class="serendipitySideBarContent">{$item.content}</div>
	</div>
Now I like Smarty to render a certain additional <div> after every second siderbar item, like this:

Code: Select all

<div class="serendipitySideBarItem ...">Item 1</div>
<div class="serendipitySideBarItem ...">Item 2</div>
<div class="additional">Added by Smarty after every second sidebaritem (after 2,4,6, etc.)</div>
<div class="serendipitySideBarItem ...">Item 3</div>
<div class="serendipitySideBarItem ...">Item 4</div>
<div class="additional">Added by Smarty after every second sidebaritem (after 2,4,6, etc.)</div>
...
Any ideas someoneon how a nice Smarty expression for this task could look like? Thanks in advance,
Achim

Re: sidebar.tpl: SMARTY expression "every second item"?

Posted: Sat Nov 28, 2009 1:21 pm
by garvinhicking
Hi!

You can give a name to your foreach loop:

{foreach from=... item=... name=MYNAME}
{if $smarty.foreach.MYNAME.index % 2}
... is odd ...
{else}
... is even ...
{/if}
{/foreach}

HTH,
Garvin

Re: sidebar.tpl: SMARTY expression "every second item"?

Posted: Sat Nov 28, 2009 5:57 pm
by Don Chambers
garvinhicking wrote:Hi!

You can give a name to your foreach loop:

{foreach from=... item=... name=MYNAME}
{if $smarty.foreach.MYNAME.index % 2}
... is odd ...
{else}
... is even ...
{/if}
{/foreach}

HTH,
Garvin
Same concept, but I prefer this:

Code: Select all

{foreach from=... item=... name=MYNAME}
  {if $smarty.foreach.MYNAME.iteration is odd}
     ... is odd ...
  {else}
     ... is even ...
  {/if}
{/foreach}

Re: sidebar.tpl: SMARTY expression "every second item"?

Posted: Tue Dec 01, 2009 11:00 am
by aschlemmer
Dear all,

thanks much for the instant help.
Today, I found the time to check the even/odd mechanism and yes, it works!
(I used the first suggested solution.)

Kind regards,
Achim