从品牌网站建设到网络营销策划,从策略到执行的一站式服务
在当初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}>楼
<{/if}>
<{/foreach}>
这里foreach中自带的属性iteration,是指当前foreach循环的次数,从1开始(第一个不是0,而是1)
其实这样写有个很大的问题,因为这里的 iteration 只作用于当前这个foreach,而当你翻页,进入下一页的时候问题就来了,如图:
看到了问题吗?第二页首个回复的作者成了楼主!!!
好了,接下来就给出我自己的方法,其实就是用了 html中 的,在其中填入自增计算,在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}>楼
<{/if}>
<{/foreach}>
这样一来,就没问题了,即使翻页,楼层也会接着上一页的楼层计数继续显示。
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图