Smartyforeach添加论坛楼层计数(counter)-创新互联

   在当初Smarty很菜的时候,用PHP写了个微型论坛,有一个需求是在楼主后面显示当前是几楼回复,如下图:

创新互联公司于2013年成立,是专业互联网技术服务公司,拥有项目做网站、成都做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元义安做网站,已为上家服务,为义安各地企业和个人服务,联系电话:028-86922220

   

  我当时首先想到用 iteration(边界符为“<{}>”):

 <{foreach from=$res item=row name=thread}>

    <{if $smarty.foreach.thread.iteration-1 eq 0}>
                楼主
<{else}>
              <{$smarty.foreach.thread.iteration-1}>楼</font>
           <{/if}>

    <{/foreach}>

       这里foreach中自带的属性iteration,是指当前foreach循环的次数,从1开始(第一个不是0,而是1)

    其实这样写有个很大的问题,因为这里的 iteration 只作用于当前这个foreach,而当你翻页,进入下一页的时候问题就来了,如图:

    

    看到了问题吗?第二页首个回复的作者成了楼主!!!

    好了,接下来就给出我自己的方法,其实就是用了 html中 的<input type="hidden">,在其中填入自增计算,在foreach开始之前assign一个变量,初始值在控制器里设置好,代码如下:

    控制器:

    计算出当前要显示的页面的 offset

//$fenyePage->pageNow   当前页数值
//$fenyePage->pageSize   每页显示的楼层数 (我这里设置的是3)
//通过计算就得出每一页开始时 楼层($floor)的起始值$floor=($fenyePage->pageNow-1)*$fenyePage->pageSize;
    
$smarty->assign("flr",$floor);

    TPL:

<{assign var="floor" value=$flr}>

<{foreach from=$res item=row name=thread}>

       <{if $floor eq 0}>
                楼主
<{else}>
              <{$floor}>楼</font>
           <{/if}>

      <input type="hidden" value="<{$floor++}>" />

 <{/foreach}>

    这样一来,就没问题了,即使翻页,楼层也会接着上一页的楼层计数继续显示。

分享题目:Smartyforeach添加论坛楼层计数(counter)-创新互联
网站URL:https://www.cdcxhl.com/article20/hseco.html

成都网站建设公司_创新互联,为您提供网站设计响应式网站全网营销推广手机网站建设静态网站企业网站制作

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都定制网站建设