博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Smarty foreach添加论坛楼层计数(counter)
阅读量:5160 次
发布时间:2019-06-13

本文共 1110 字,大约阅读时间需要 3 分钟。

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

   

 

   我当时首先想到用  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中 的<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}>楼 <{/if}> <{/foreach}>

 

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

转载于:https://www.cnblogs.com/Joynic/archive/2013/01/25/2876535.html

你可能感兴趣的文章
UVa 294 (因数的个数) Divisors
查看>>
手工制作简单后台模板
查看>>
eclipse中添加配置文件夹config
查看>>
Python基础 ( 十 ) —— 面向对象(多态、封装、反射、动态导入)
查看>>
list.ensureCapacity竟然会变慢
查看>>
C# 视频流操作
查看>>
回归本心QwQ背包问题luogu1776
查看>>
python 记录
查看>>
HTML 学习笔记
查看>>
.net From 验证 webconfig 配置
查看>>
poj3764 The XOR Longest Path【dfs】【Trie树】
查看>>
【社会/人文】概念的理解 —— 断舍离、饭(饭制版)
查看>>
基本乐理知识
查看>>
使用 LaTex 制作个人简历(CV,英文版)
查看>>
走遍中国 —— 大西南
查看>>
yum 和 apt-get
查看>>
TypeError: t is null
查看>>
Git使用教程
查看>>
无视编码都统一转成unicode 然后截断 例如 。“发发发发发发” 操作之后显示为 “发发发发...”...
查看>>
正则表达式匹配号码
查看>>