新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 软件开发 > Web开发 > PHP教程 > 正文:smarty实例教程

smarty实例教程

新客网 XKER.COM 2006-12-08 来源: 收藏本文

smarty实例教程(4)

 

==================================================
example4.php输出:
==================================================
  <html>
   <head><title>模板中的流程控制</title><head>
   <body>
      <table border="1">
       
                <tr bgcolor="#D4D0C8">
       
             <td>001</td>
       <td>第1条新闻</td>
       </tr>
                <tr bgcolor = "#EEEEEE">
        
              <td>002</td>
       <td>第2条新闻</td>
       </tr>
                <tr bgcolor="#D4D0C8">
       
             <td>003</td>
       <td>第3条新闻</td>
       </tr>
                <tr bgcolor = "#EEEEEE">
        
              <td>004</td>
       <td>第4条新闻</td>
       </tr>
                <tr bgcolor="#D4D0C8">
       
             <td>005</td>
       <td>第5条新闻</td>
       </tr>
                <tr bgcolor = "#EEEEEE">
        
              <td>006</td>
       <td>第6条新闻</td>
       </tr>
                <tr bgcolor="#D4D0C8">
       
             <td>007</td>
       <td>第7条新闻</td>
       </tr>
                <tr bgcolor = "#EEEEEE">
        
              <td>008</td>
       <td>第8条新闻</td>
       </tr>
         </table>
   </body>
 </html>

  模板文件中使用:
         {if $tbColor == "#D4D0C8"}
        <tr bgcolor="{$tbColor}">
        {assign var="tbColor" value="#EEEEEE"}
      {else $tbColor == "#EEEEEE"}
        <tr bgcolor = "{$tbColor}">
         {assign var="tbColor" value="#D4D0C8"}
       {/if}
  这一语句块进行设置每一行的背景颜色, {assign var="tbColor" value="#D4D0C8"}还记的吧,是例3中设置模板内部变量的定义方法,
        使用模板内置 的流程控制语句有时可以极大程度上提高程序的控制能力,下面一个例子是phpx.com中曾经有位朋友问过的,我将它作为
   实例放在这里供大家学习.

 

  例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
 
  require_once ("./public/inc/F117_Smarty.php");

  $smarty = new F117_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>,否则执行下面的部分,
     很简单的就解决了一个在程序上实现起来很麻烦的事情.

收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐