Chinaunix首页 | 论坛 | 博客
  • 博客访问: 30467346
  • 博文数量: 708
  • 博客积分: 12163
  • 博客等级: 上将
  • 技术积分: 8240
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-04 20:59
文章分类

全部博文(708)

分类:

2010-04-02 08:55:27

例5: 使用模板内置流程控制语句进行一行多单元格内容输出, 也就是在视觉上smarty每记输出几条记录:
  ================================================
  example5.tpl
  ================================================
  <html>
    <head><title>一行输出多条记录</title></head>
    <body>
       <table>
    <tr>
            {section name=loop loop=$News step=1}
            {if $smarty.section.loop.index % 4 == 0}
               </tr>
               <tr>
            {/if}
       <td>{$News[loop].newsID}</td>
       <td>{$News[loop].newsTitle}</td>
         {/section}
       </tr>
      </table>
    </body>
  </html>

  ====================================================
  example5.php
  ====================================================
<?php
     /*********************************************
      *
      * 文件名: example5.php
      * 作 用: 显示实例程序5
      *
      * 作 者: 大师兄
      * Email: [email]teacherli@163.com[/email]
      *
      *********************************************/

  
  require_once ("./comm/Smarty.class.php");

  $smarty = new Smarty();
  $smarty->template_dir = './templates/';
  $smarty->compile_dir = './templates_c/';
  $smarty->config_dir = './configs/';
  $smarty->cache_dir = './cache/';
  $smarty->caching = false;

  $array[]= array("newsID"=>"001", "newsTitle"=>"第1条新闻");
  $array[]= array("newsID"=>"002", "newsTitle"=>"第2条新闻");
  $array[]= array("newsID"=>"003", "newsTitle"=>"第3条新闻");
  $array[]= array("newsID"=>"004", "newsTitle"=>"第4条新闻");
  $array[]= array("newsID"=>"005", "newsTitle"=>"第5条新闻");
  $array[]= array("newsID"=>"006", "newsTitle"=>"第6条新闻");
  $array[]= array("newsID"=>"007", "newsTitle"=>"第7条新闻");
  $array[]= array("newsID"=>"008", "newsTitle"=>"第8条新闻");


  $smarty->assign("News", $array);

  $smarty->display("example5.tpl");
?>

==================================================
example5.php输出内容:
==================================================
   <html>
    <head><title>一行输出多条记录</title></head>
    <body>
       <table>
    <tr>
                
                           </tr>
               <tr>
                   <td>001</td>
       <td>第1条新闻</td>
             
                   <td>002</td>
       <td>第2条新闻</td>
             
                   <td>003</td>
       <td>第3条新闻</td>
             
                   <td>004</td>
       <td>第4条新闻</td>
             
               </tr>
               <tr>
                   <td>005</td>
       <td>第5条新闻</td>
             
                   <td>006</td>
       <td>第6条新闻</td>
             
                   <td>007</td>
       <td>第7条新闻</td>
             
                   <td>008</td>
       <td>第8条新闻</td>
                </tr>
      </table>
    </body>
  </html>

     说明:本来还可以优化,使得第一行不输出一个空行的<tr> </tr>,但是学习程序,简单为好,先就这么用了. 在这里说明一下:
         {section name=loop loop=$News step=1}
            {if $smarty.section.loop.index % 4 == 0}
               </tr>
               <tr>
            {/if}
               <td>{$News[loop].newsID}</td>
               <td>{$News[loop].newsTitle}</td>
          {/section}

     {section}{/section}指的是一个循环部分,在下一节会有详细的介绍,我们主要来看看这一句:
         {if $smarty.section.loop.index % 4 == 0}
     $smarty.section.loop指出$smarty的实例中的section段有一个叫loop的部分, 它有一个属性叫index, 它的表示当前循环的索引值,从0开始递增,我们把它%4后与0相比较,也就是说,如果当前的索引值是4的倍数,它就输出一个</tr><tr>,否则执行下面的部分,
     很简单的就解决了一个在程序上实现起来很麻烦的事情.这里我仅演示的是如何使用{if}语句功能,实现这个功能在Smarty的模板中还有一个非常方便的办法:{cycle},使用的例子如下所示:
         =================================
         {section name=rows loop=$data}
       <tr bgcolor="{cycle values="#D4D0C8,#EEEEEE"}">
         <td>{$data[rows]}</td>
       </tr>
      {/section}
         =================================


阅读(1741) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~