建站帮助

诚信合作, 高质专业!

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

2015-06-18 10:50:00 浏览 我要评论

最近忙于项目,比较少分享技术文档,今天CMSYOU在这里分享最近用到的一个数据调用方式: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="自定义返回值"的使用,避免数据冲突。

 

欢迎大家收听CMSYOU官方微博,看完CMSYOU思优团队的文章有疑问,那就在下面评论留言吧!

我要收藏
点个赞吧
相关标签:

相关阅读

本月热门

精选推荐

在线客服

扫一扫,关注我们

扫一扫,关注我们