关于Smarty,动态函数数组循环的问题

lin050 2009-12-05 11:21:37
register_function 返回一个数组后,如果通过section或foreach循环

举个例子

比如 $smarty->register_function('newslist',"newslist");

function newslist(){
.....
while (....) {
$news[] = $result;
}
return $news //返回数组
}
在index.html里
{newslist}
获得这个数组
如何像
{section loop={newslist} name=loop}
...
{/section}
这样,把数组循环显示出来!!!
我上面的代码无法实现,请高手帮忙解答。

怎么用循环出来。
...全文
166 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lin050 2009-12-08
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 coolesting 的回复:]
引用 5 楼 lin050 的回复:
感谢楼上的回答
可是
{#section name=Loop loop=$news#}
中的$news是什么。
$smarty->register_function('newslist',"newslist");
应该是{newslist}啊


把名称对应改过来就行了
[/Quote]
不行的。

还有,num是function的变量。用Smarty Register_funtion可以达到修改function里变量的值

你们可以看看手册里的register_function用法呀。~``
YHL27 2009-12-08
  • 打赏
  • 举报
回复
learnling!
骄傲青蛙 2009-12-07
  • 打赏
  • 举报
回复
{newslist num=10} 这样就可以改变函数里$num的值,从而达到取固定条数的记录.

-*----------------------------

num 是什么, 从那里来的 ?
骄傲青蛙 2009-12-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lin050 的回复:]
感谢楼上的回答
可是
{#section name=Loop loop=$news#}
中的$news是什么。
$smarty->register_function('newslist',"newslist");
应该是{newslist}啊
[/Quote]

把名称对应改过来就行了
alandy 2009-12-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lin050 的回复:]
感谢楼上的回答
可是
{#section name=Loop loop=$news#}
中的$news是什么。
$smarty->register_function('newslist',"newslist");
应该是{newslist}啊
[/Quote]
sorry,以上写法是循环一个数组.换成{newslist}试试~~
lin050 2009-12-06
  • 打赏
  • 举报
回复
感谢楼上的回答
可是
{#section name=Loop loop=$news#}
中的$news是什么。
$smarty->register_function('newslist',"newslist");
应该是{newslist}啊
alandy 2009-12-05
  • 打赏
  • 举报
回复

<?php
function newslist($params){
extract($params);
global $DB; //MySQL类实例
$news = array();
if (empty($num)) $num = 5;
$sql = "select * from `news` order by `id` DESC limit $num";
$query = $DB->query($sql) or die(mysql_error());
while ($row = $DB->fetch($query))
{
$news['title'] = $row['title']; //假如title是表news一个字段
}
return $news;
}
$smarty->register_function('newslist',"newslist");
$smarty->display('test.tpl');
?>

test.tpl

{#section name=Loop loop=$news#}
{#$news.title#}
{#/section#}
lin050 2009-12-05
  • 打赏
  • 举报
回复
function newslist($params)
{
extract($params);
global $DB; //MySQL类实例
if (empty($num))
$num = 5;
$sql = "select * from `news` order by `id` DESC limit $num";
$query = $DB->query($sql) or die(mysql_error());
$row = $DB->fetch($query);
while ($row = $DB->fetch($query))
{
$news[] = $row;
}
unset($DB);
return $news;
}
$smarty->register_function('newslist',"newslist");
然后在模版调用时
{newslist num=10} 这样就可以改变函数里$num的值,从而达到取固定条数的记录.
但是,return $news这个数组后,如何用section循环.
骄傲青蛙 2009-12-05
  • 打赏
  • 举报
回复
问题没有说清楚,

打 “.....” 这里想怎么循环, 你写成php代码, 我帮你转换为模板试试
lin050 2009-12-05
  • 打赏
  • 举报
回复
没人能帮忙一下吗。

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧