这个的确不好做,可用XML配合来做

解决方案 »

  1.   

    我还没学XML,,现在PHP还刚学。。
      

  2.   

    把echo的东西换成 string 就如此简单
      

  3.   

    xml配合xslt可以动态分页,可以看看xml版块孟子E章的分页程序
      

  4.   

    个人想法:先把数据导入模板,比如a.php 调用模板 然后用file函数读出,再写入一个新的html文件里,这样就生成了html文件
      

  5.   

    列表分页应该是生成HTML文件的时候。已经把文件路径有规则的写好了吧
    文章分页是不是生成的HTML文件放在一个夹子里面然后读取里面的文件。采用循环来分页。。这样不可以嘛?不知道做过这方面的朋友。。是否这样做
      

  6.   

    在添加文章时加入分页标志,在生成静态页面时,用explode("标志",$Content);
    $Content = explode("[dvnews_page]", $Content);
    $i=1;
    foreach($Content as $key => $value){
    if($value!=""){
    $t = new template("../template/");
    $t->set_file("temp","display.html");//display.html静态网页的模板 $Name =$Id."_".$i;//文件名为ID与$i
    $FileName = "$Name.html";
    $Prep = "";
    $Next = "";
    $count = count($Content);


    if($i == 1 && $count != 1){
    $NextName = $Id."_".($i+1).".html";
    $Next = "[<a href=".$NextName.">下一页</a>]";
    }
    if($i == $count && $count != 1){
    $PreName = $Id."_".($i-1).".html";
    $Prep = "[<a href=".$PreName.">上一页</a>]";
    }
    if($i != 1 && $i != $count && $count != 1){
    $PreName = $Id."_".($i-1).".html";
    $NextName = $Id."_".($i+1).".html";
    $Prep = "[<a href=".$PreName.">上一页</a>]";
    $Next = "[<a href=".$NextName.">下一页</a>]";
    }
    $t->set_var(array("Title"=>$Row[0].$i,
     "Content"=>$value,
      "AddTime"=>你添加文章时间,
      "PrePage"=>$Prep,
      "NextPage"=>$Next,
      "NewsHits"=>文章点击率   ));
    $t->parse("out","temp");
    $PageContent = $t->get("out");

    $Handle   = fopen ($FileName,"w");
    if (!is_writable ($FileName)){
    die ("文件:".$FileName."不可写,请检查其属性后重试!");
    }

       if(!fwrite ($Handle,$PageContent)){  
    die ("生成文件".$FileName."失败!");


    $File .=$FileName;
    fclose ($Handle);
    $i++;
    }
      

  7.   

    实际应用中常见问题解决方案参考:  一,文章列表问题:
      
      在数据库中创建字段,记录文件名,每生成一个文件,将自动生成的文件名存入数据库,对于推荐文章,只需指向存放静态文件的指定文件夹中的该页面即可。利用PHP操作处理文章列表,存为字符串,生成页面时替换此字符串即可。如,在页面中放置文章列表的表格加入标记{articletable},而在PHP处理文件中:
      Code: [点击这里把以下内容复制到剪贴板]   
    <?php
       $title = "拓迈国际测试模板";
       $file   = "TwoMax Inter test templet,<br>author:Matrix@Two_Max"; $fp          = fopen ("temp.html","r");
       $content  = fread ($fp,filesize ("temp.html"));
       $content .= str_replace ("{file}",$file,$content);
       $content .= str_replace ("{title}",$title,$content);
       
       //  生成列表开始
       $list = '';
       $sql = "select id,title,filename from article";
       $query = mysql_query ($sql);
       while ($result = mysql_fetch_array ($query)){
          $list .= '<a href='.$root.$result['filename'].' target=_blank>'.$result['title'].'</a><br>';
       }
       $content .= str_replace ("{articletable}",$list,$content);
       
       //生成列表结束
       // echo $content;
       
       $filename = "test/test.html";
       $handle    = fopen ($filename,"w"); //打开文件指针,创建文件
       /*
     检查文件是否被创建且可写
       */
       if (!is_writable ($filename)){
          die ("文件:".$filename."不可写,请检查其属性后重试!");
       }
       if (!fwrite ($handle,$content)){  //将信息写入文件
          die ("生成文件".$filename."失败!");
       } 
       fclose ($handle); //关闭指针
       
       die ("创建文件".$filename."成功!");
    ?> 
     
      二,分页问题。  如我们指定分页时,每页20篇。某子频道列表内文章经数据库查询为45条,则,首先我们通过查询得到如下参数:1,总页数;2,每页篇数。第二步,for ($i = 0; $i < allpages; $i++),页面元素获取,分析,文章生成,都在此循环中执行。不同的是,die ("创建文件".$filename."成功!";这句去掉,放到循环后的显示,因为该语句将中止程序执行。例:
      Code: [点击这里把以下内容复制到剪贴板]   
    <?php
       $fp          = fopen ("temp.html","r");
       $content  = fread ($fp,filesize ("temp.html"));
       $onepage  = '20';
       $sql          = "select id from article where channel='$channelid'";
       $query      = mysql_query ($sql);
       $num        = mysql_num_rows ($query);
       $allpages   = ceil ($num / $onepage);   for ($i = 0;$i<$allpages; $i++){
          if ($i == 0){
             $indexpath = "index.html";
          } else {
             $indexpath = "index_".$i."html";
          }
          $start = $i * $onepage;
          $list    = '';
          $sql_for_page = "select name,filename,title from article where channel='$channelid' limit $start,$onepage";
          $query_for_page = mysql_query ($sql_for_page);
          while ($result = $query_for_page){
             $list .= '<a href='.$root.$result['filename'].' target=_blank>'.$title.'</a><br>';
          }
          
          $content = str_replace ("{articletable}",$list,$content);      if (is_file ($indexpath)){
             @unlink ($indexpath); //若文件已存在,则删除
          }      $handle    = fopen ($indexpath,"w"); //打开文件指针,创建文件
          /*
        检查文件是否被创建且可写
          */
          if (!is_writable ($indexpath)){
             echo "文件:".$indexpath."不可写,请检查其属性后重试!"; //修改为echo
          }
          if (!fwrite ($handle,$content)){  //将信息写入文件
             echo "生成文件".$indexpath."失败!"; //修改为echo
          } 
          fclose ($handle); //关闭指针
       }   fclose ($fp);
       die ("生成分页文件完成,如生成不完全,请检查文件权限系统后重新生成!");?>