用户操作
[即时聊天] [发私信] [加为好友]
纯月ID:danny_xcz
858625次访问,排名41好友2人,关注者91
danny_xcz的文章
原创 296 篇
翻译 3 篇
转载 25 篇
评论 639 篇
纯月的公告
最近评论
zhengjiashuai:收藏了先
zjxzou:bucuo~
yu3350360:收藏了先 呵呵
henhaohll:有些意思啊!呵呵 ..
sap99:www.sap99.com/,SAP99资料多多

SAP免费资料下载
http://www.sap99.com

有很多的学习资料,推荐一下,
文章分类
收藏
    相册
    Blog用途
    我的相册
    Java Desktop
    Open Source
    友情链接
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 世界上最简单的模板,比Smarty,Xtemplate还要强大收藏

    新一篇: Open-source ERP 公司 Compiere 任命新的CEO | 旧一篇: IBM实验室对SWT, Swing 和 AWT 的特征比较

    class template {
     var $vars;

     function template() {
      $this->vars = array();
     }

     function render($content_template, $page_title, $wrap_file = '', $nowrap = false) {
      error_reporting(E_ALL ^ E_NOTICE); // Clobber notices in template output
      extract($this->vars);
      $path = defined('TEMPLATE_PATH')
      ? './templates/'.THEME.'/'.TEMPLATE_PATH.'/'
      : './templates/'.THEME.'/';
      include($nowrap ? $path.$content_template : ($wrap_file ? $path.$wrap_file : $path.'wrap.html'));
     }
     
     function fetch($content_template) {
      ob_start();
      $this->render($content_template, '', '', true);
      $rettext = ob_get_contents();
      ob_end_clean();
      return $rettext;
     }
      

     function assign($var, $value = '') {
      if (is_array($var)) {
       foreach ($var as $k => $v) {
        $this->vars[$k] = $v;
       }
      } else {
       $this->vars[$var] = $value;
      }
     }
    }

    $t = new template();

    这是一个模板的类,是PHP写的,那么模板该如何写呢?答案还是PHP,在你的模板html文件中

    使用<?php echo $error; ?>这样的方法,把assign的变量显示出来。当然如果你要用循环或者各种复杂的

    结构,各种复杂的字符串函数都可以自由的调用。试问还有什么模板语言能比PHP还强大呢?

     

    把上面的类放到include里面,然后需要用到模板的文件就包含这个include,下面我们看看几个主要的用法

    1 实现基本的模板功能

    变量赋值,这里可以是变量,也可以是数组

    $t->assign($_POST);  
      $t->assign('error', $error);
     
     $t->render('test.html', "Title","",true);

    2 实现页面布局

    例如有一个布局页面,wrap.html

    那么上面的render就要改成 $t->render('test.html', "Title");

    这样它就默认使用wrap.html最为布局,而test.html只是这个布局中间的一个小块

    3实现类似局部模板生成的例子

    假设网页中有一个Block是testfetch.php,它对应一个testfetch.html的模板,那么

    这两个文件可以这样写:

    testfetch.php

    <?php


    include 'include.php';

    $t->assign('error', "Error Message");
    echo $t->fetch('testfetch.html');

    ?>

    testfetch.html

    <table width="100%">
     <tr>
      <td align="center">
                <?php echo $error; ?>
       <br>
      </td>
     </tr>
    </table>

    这样你就可以在其它任何地方包含这个Block。

     

    总结:其实所有的语言JSP等等,都可以使用这样的模板来构建,其实JSP,PHP本身就是最好的教本语言,

    为什么还要去学习我们不熟悉的Smarty,Velocity等等。其实结果都是一样的。

    本模板类出自PHPBT.

    发表于 @ 2006年02月27日 15:09:00|评论(loading...)|收藏

    新一篇: Open-source ERP 公司 Compiere 任命新的CEO | 旧一篇: IBM实验室对SWT, Swing 和 AWT 的特征比较

    评论

    #corsak 发表于2006-02-28 16:30:00  IP: 220.174.209.*
    确实很先进!不过我不会用.

    模板本身就是为了让美工和后台开发人员工作上分离, 你这样就做,分离就没有任何意义了. 模板不能太复杂, 我一直不推荐别人用smarty,smarty最大的优点就是能生成cache,但模板太复杂了.学模板语言就够烦的.

    我比较中意的模板是,做一次模板, 不管用asp/asp.net/php/java等都能通用.
    #纯月 发表于2006-03-01 07:48:00  IP: 202.195.172.*
    其实这个模板就是smarty这类模板引擎的简化版,html和页面逻辑是分离的。只不过模板语言选取一套精简的PHP语法。所以不用去学习那些生涩的smarty的语法。而且开发实际项目的时候,就会发现使用smarty这样的模板在处理全局变量和一些模板函数方面,很不方便。
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 纯月