Smarty:截断没有。 {section}中的div

时间:2012-05-30 06:57:03

标签: php http smarty

我有类别&子类别。我想选择所有父类别&子类别。但是想在每个父类别下只显示3-4个子类别。

我的Php 代码

 /******Start Categories********/
  $ca=mysql_query('select * from category where parent_id=0');
  while($ca1 = mysql_fetch_array($ca))
{
$ca2[]=$ca1;
}
$smarty->assign('ca2',$ca2);


  /******End Categories********/
   /******Start SubCategories********/
  $sub=mysql_query('select * from category where parent_id!=0 ');
  while($sub1 = mysql_fetch_array($sub))
{
$sub2[]=$sub1;
}
$smarty->assign('sub2',$sub2);


  /******End SubCategories********/

和Tpl 代码:

<div id="sub_ltcol">
                {section name=loopc loop=$ca2}
                    <div id="gr_design">
                        <div id="gr_head">
                            <h4>{$ca2[loopc].category_name}</h4>
                        </div>
                        {section name=loops loop=$sub2}
                        {if $ca2[loopc].category_id eq $sub2[loops].parent_id}
                        <div id="gr_body">
                            <ul>
                            <li>
                                    <div class="arw_icon"><img src="images/arw_icon.png"></div>
                                    <a href="#">{$sub2[loops].category_name}</a>
                                </li>
                                <div class="dotted_line"></div>
                            </ul>
                        </div>{/if}
                        {/section}
                    </div>
                    {/section}


                </div>

我想只显示<li>标记3-4次。

3 个答案:

答案 0 :(得分:0)

你可以尝试

{section name=loops loop=$sub2}
  {if $ca2[loopc].category_id eq $sub2[loops].parent_id AND $smarty.section.loops.iteration <= 4}

      ...
  {/if}

{/section}

答案 1 :(得分:0)

您可以使用此方法:

<div id="sub_ltcol">
{section name=loopc loop=$ca2}
    <div id="gr_design">
        <div id="gr_head">
            <h4>{$ca2[loopc].category_name}</h4>
        </div>
        {section name=loops loop=$sub2}
        {if $ca2[loopc].category_id eq $sub2[loops].parent_id}
        {if $smarty.foreach.loops.index lte 3}
        <div id="gr_body">
            <ul>
            <li>
                    <div class="arw_icon"><img src="images/arw_icon.png"></div>
                    <a href="#">{$sub2[loops].category_name}</a>
                </li>
                <div class="dotted_line"></div>
            </ul>
        </div>{/if}
        {/if}
    {/section}
</div>
{/section}
</div>

答案 2 :(得分:0)

如果您只需要显示3个子类别,请从DB中获取这些内容并显示它。 你可以使用相同的限制属性

 /******Start SubCategories********/
  $sub=mysql_query('select * from category where parent_id!=0 limit 3');

它也有助于提高页面加载性能。