Question

I have foreach loop

{foreach from=$rootCategories item=category}
    <li id="parentCategory" data-category="{$category.id_category}">
        <span>
            <img alt="{$category.name}" src="{$base_dir}img/c/{$category.id_category}.jpg" width='46' height='26'>
            <h1>{$category.name}</h1>
        </span>
    </li>                               
    {/foreach}

Current output is:

Ajp Alter beta black cpanle cupa

I want it to be

A Ajp Alter
B beta black
C cpanle cupa

I have used that code in foreach

$lastFoundLetter = ''; 
$firstLetter = {$category.name|substr:0:1} 
{if {$firstLetter} != {$lastFoundLetter}} //you've started a new letter category
 {if {$lastFoundLetter} != ''} //if there's a real value in $lastFoundLetter, we need to close the previous div </div>
 {/if } 
<div id="{$firstLetter}"> {$firstLetter} "<br/>"
{ $lastFoundLetter} = {$firstLetter}; </div> 
{/if}

but its not working i think i have used wrong code.Guys plz help me

Was it helpful?

Solution

Code for changed question :

{assign  var = 'lastFoundLetter' value= ''}
{foreach from=$rootCategories item=category}
{assign  var = 'curFirstLetter' value= {$category.name|substr:0:1|upper}}

{if $curFirstLetter neq $lastFoundLetter} 
    {if $lastFoundLetter neq ''}<br />{/if}
    {$curFirstLetter}
    {assign  var = 'lastFoundLetter' value=$curFirstLetter} 
{/if}
{$category.name}
{/foreach}

OTHER TIPS

That code will do what you want:

{assign  var = 'lastFoundLetter' value= ''}
{foreach from=$rootCategories item=category}
{assign  var = 'curFirstLetter' value= {$category.name|substr:0:1|upper}}

{if $curFirstLetter neq $lastFoundLetter} 
    {$curFirstLetter}
    {assign  var = 'lastFoundLetter' value=$curFirstLetter} 
    {$category.name}
{else}
     &nbsp; &nbsp;{$category.name}
{/if}

<br />
{/foreach}

It was tested in newest Smarty 3.1.18

Result for this code is:

A Ajp
  Alter
B beta
  black
C cpanle
  cupa 

so the same you expected

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top