zoukankan      html  css  js  c++  java
  • php+Smarty生成静态页原理,论坛里好多朋友都在问我这个问题。不懂的进来看下

    其实用Smarty生成静态页我个人感觉比缓存生成静态页还要简单。 

    主要用到Smarty的这个方法 $Smarty->fetch("模板名") 

    这个函数用法很简单,和$Smarty->display("模板名") 是一样的。 

    不同的是$Smarty->fetch("模板名") 是把模板替换后的内容返回 

    而$Smarty->display("模板名")是直接输出也可以说是显示出来。 

    我们用$Smarty->fetch("模板名") 方法得到了替换模板之后的内容 

    之后就只要把内容写到xxx.html文件中就行了。下面我给大家说说我个人生成静态页的方法 

    [php] 
    <?php 
    include_once("Smarty.class.config.php"); // 调用Smarty 
    include_once("mysql.class.config.php"); //调用mysql类 

    $Result = $db->Select("message"); 
    $Total = $db->ReTotal($Result); //这里是为了算出数据库总纪录数 
    $PageSIze = 10; //这里定义每页显示多少条纪录 
    for($i=1;$i<=$Total;$i++){ 
    //有多少纪录就循环多少次 
    $HtmlName = "index_$i.html"; //我们已当前是第几条纪录命名每个.html文件 第一次文件名为 index_1.html; 
    $Limit = ($i-1) * $PageSize . "," . $PageSize; //这里是得到每次查询的LImit值 ,第一次为 0,10 
    $MenuTop = "<a href='index_".($i-1).".html'>上一页</a>"; //当前页为$i 那么$i-1就是上一页 
    $MenuNext = "<a href='index_".($i+1).">下一页</a>"; //同样$i+1肯定就是下一页了 
    //得到了文件名,分页导航条 ,我们开始替换模板 
    $Sql[$i] = "SELECT * FROM message limit $Limit"; //这时候$Sql = "SELECT * FROM message limit 0,10"; 
    $Result[$i] = mysql_query($Sql[$i]); //已当前$i的值,也就是当前是第几页来给$Sql 和$Result 为名字 
    while($Row[$i][] = mysql_fetch_array($Result[$i])){ //我也不知道为什么$Row[$i]后面要加个[] 如果不加替换就会出现错误 
    //开始替换了 

    http://www.nibao.net/question/8104
    $Smarty->assign("message",$Row); 
    $Smarty->assign("MenuTop",$MenuTop) //上一页 
    $Smarty->assign("MenuNext",$MenuNext) //下一页 
    $Content[$i] = $Smarty->fetch("index.html") //用$Content[$i] 得到每页的内容 
    } 
    //替换完了,我们把内容写到文件里 
    if(file_exists($HtmlName)){ 
    @unlink($HtmlName) ; //如果文件已经存在就把它删除 
    } 
    $fp = fopen($HtmlName,"w"); //以可写方式打开$HtmlName ,第一次循环是打开index_1.html 
    fwrite($fp,$Content[$i]); //用fwrite()函数, 把内容写入每个文件 
    fclose($fp);//关闭打开的文件指针 
    } 
    //好了我没来看看模板页 
    ?> 

    [/php] 
    <html> 
    <body> 
    {section name=list loop=$message} <!--这就是我们上面替换的那个模板变量--> 
    姓名:{$message 

        .name} <br>

     

        内容:{$message
          .content} <hr>

     

          {sectionelse}

     

          暂时没有内容 <!-- 如果没有内容就显示 -->

     

          {/section}

     

          {$MenuTop} | {$MenuNext} <!--这里是我们上面替换的分页条-->

     

          </body>

     

          </html>

     

          好了,先到大这,我也没调试就直接给大家讲了,如果有错误,请大家指出

     

  • 相关阅读:
    结对编程第一次作业
    软件工程第三次作业
    软件工程第二次作业
    软件工程第一次作业
    第五次作业(结对第2次)
    第四次作业
    第三次作业
    第二次作业(多图预警)
    第一次作业
    软工第四次作业——结对编程二
  • 原文地址:https://www.cnblogs.com/nbjk/p/3785662.html
Copyright © 2011-2022 走看看