Phpcms V9数据调用循环嵌套调用方法

来自:互联网
时间:2018-08-26
阅读:

今天在这里分享最近用到的一个数据调用方式:Phpcms V9数据调用循环嵌套调用。

Phpcms V9默认调用数据列表的方式:

{pc:content action="lists" catid="$catid" num="25" order="id DESC" page="$page"}
        <ul class="list lh24 f14">
{loop $data $r}
<li><span class="rt">{date('Y-m-d H:i:s',$r[inputtime])}</span>路<a href="{$r[url]}" target="_blank"{title_style($r[style])}>{$r[title]}</a></li>
{if $n%5==0}<li class="bk20 hr"></li>{/if}
{/loop}
        </ul>
        <div id="pages" class="text-c">{$pages}</div>
{/pc}

可以看出是一层loop循环,如果需要多层循环,那么就会用到循环嵌套,具体方法:

1、修改/phpcms/lib/classes/template_cache.class.php文件,在template_parse 方法(大约第69行),加入如下代码:

$str = preg_replace ("/{loop(S+)s+(S+)s+(S+)}/","<?php $n\1=1;if(is_array(\2)) foreach(\2 AS \3) { ?>", $str );
$str = preg_replace ("/{loop(S+)s+(S+)s+(S+)s+(S+)}/","<?php $n\1=1; if(is_array(\2)) foreach(\2 AS \3 => \4) { ?>", $str );
$str = preg_replace ("/{/loop(S+)}/","<?php $n\1++;}unset($n\1); ?>", $str );

这样避免多次循环在模板编译的时候出错。

2、前台模板调用:

{pc:content action="category" catid="0" num="25" order="listorder ASC"}
  {loop $data $r}
    <dd> <a href="{$r[url]}">{$r[catname]}</a>
<ul>
    {pc:content action="category" catid="$r[catid]" num="25" order="listorder ASC" return="data2"}
    {loop2 $data2 $v}
    <li><a href="{$v[url]}">{$v[catname]}</a></li>
    {/loop2}
    {/pc}
</ul>
    </dd>
  {/loop}
{/pc}

注:在循环中注意return="自定义返回值"的使用,避免数据冲突。

返回顶部
顶部