极致CMS

极致CMS列表输出不同数量组合的方法

极致CMS 51源码 10-27 人阅读

1. 奇偶数交替输出不同格式的列表(难度:易)

如:第一行的class="left",第二行的class="right"

{loop table="article" limit="24" isshow="1" as="v"}

{if($v_n%2==1)}{$v['title']}{else}{$v['title']}{/if}

{/loop}


可以应用到loop和栏目列表


2. 输出相同数量分组的列表(难度:中)

如:3个为一组,一组组输出

(1)在列表内根据每行数量判断

{foreach $lists as $v}
{if($v_n%3==0)}{/if}{$v['title']}{if($v_n%3==2)}{/if}

{/loop}
{if($v_n%3!=2)}{/if}

注意最后一个标签是在foreach后面的,别忘记了

(2)先分组后输出

{php
$newlist = [];
$i = 0
foreach($lists as $k=>$v){
    $newlist[$i][]=$v;
    if($k%3==2){
        $i++;
    }

}


/}

{foreach $newlist as $v}    {foreach $v as $vv}
    {$vv['title']}    {/foreach}{/foreach}


3. 交替输出每行不同数量的列表(难)

这种实在有“亿”点点麻烦,不过也不是不能实现,我们使用先分组后输出的方式。

如:第一行3个为一组,第二行4个为一组,循环输出

{php
$newlist = [];
$i = 0;
foreach($lists as $v){
    $newlist[$i][]=$v;
    if($i%2==0){
        if($k%3==2){
            $i++;
        } 
    }else{
        if($k%4==3){
            $i++;
        } 
    }
    

}


/}


{foreach $newlist as $v}
{if($v_n%2==0)}    {foreach $v as $vv}
    {$vv['title']}    {/foreach}{else}    {foreach $v as $vv}
    {$vv['title']}    {/foreach}{/if}

{/foreach}


那么,如何将loop转换成foreach去处理输出呢?

这个也简单,多一次循环罢了,如下:

{php
$lists = [];
/}
{loop table="article" isshow="1" limit="24" as="v"}
{php
$lists[]=$v;
/}
{/loop}

这样就得到了$lists,之后就可以使用foreach 输出 $lists


以上,就是所有内容,虽然有些难度,当然,复制粘贴,然后修改下就可以用了。