zoukankan      html  css  js  c++  java
  • php+smarty批量生成静态文件

    采用php+smary来模拟dedecms后台—>"更新所有文档”的功能。特别说明,因为是在本机测试,只是为了能看到实现的功能,所以写得很简单。当然,本人也是菜鸟级php爱好者,欢迎大家批评指正。

    第一步:下载和安装smarty

    (1)我的网址根目录:localhost/php/

    (2)php根目录下有:

    libs目录——smarty库文件;

    tpls目录——用于放置smarty的cache目录、configs目录、templates目录、templates_c目录;

    article目录—— 呆会生成的静态文件,都放在这里

    index.php文件——php程序代码,呆会访问该页面时,即自动批量生成静态文件

    第二步:index.php代码

    一切从简,这里从数据库 dede_archives表中,只读取是 id 和 title 两个字段的内容。

    <?php
    header("content-type:text/html;charset=utf-8");
    /**
        * smarty 配置
    **/
    include("./libs/Smarty.class.php");
    $smarty = new Smarty();
    $smarty->setTemplateDir('./tpls/templates/');
    $smarty->setCompileDir('./tpls/templates_c/');
    $smarty->setConfigDir('./tpls/configs/');
    $smarty->setCacheDir('./tpls/cache');
    
    /**
        * 从数据库中读取内容
    **/
    $art = array();
    $mysqli = new mysqli("localhost","root","123456","dedecmsv57gbksp1");
    if($mysqli->error){
        die("数据库连接失败:". $mysqli->error);
    }
    $mysqli->query('set names utf8');
    $query = "select id,title from dede_archives limit 0,3";//简单测试,所以只读取了3篇文章
    $res = $mysqli->query($query);
    while($row = $res->fetch_assoc()){
        $art[] = $row;
    }
    $mysqli->close();
    
    /**
        *循环生成静态文件
    **/
    for($i=0,$len=count($art);$i<$len;$i++){
        $smarty->assign("id",$art[$i]['id']);
        $smarty->assign("title",$art[$i]['title']);
        $str = $smarty->fetch("view.html");//获得模板中smarty标签被替换后的内容
        
        //生成静态文件
        $fp = fopen("./article/views-".$art[$i]['id'].".html","w");
        fwrite($fp, $str);
        fclose($fp);
    }
    echo "生成静态文件成功";
    ?>

    第三步:模板文件 ./tpls/templates/view.html

    <html>
    <head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
    <title>{$title}</title>
    </head>
    <body>
    <p>文章id为:{$id}</p>
    <h4>文章标题:{$title}</h4>
    </body>
    </html>

    ok,完成,访问 index.php页面,即在 ./article/ 目录下自动生成静态文件。

  • 相关阅读:
    Master公式计算递归时间复杂度
    对数器的使用
    HTML翻转菜单练习
    剑指offer题目解答合集(C++版)
    HTML---仿网易新闻登录页
    两个有序数组中的中位数以及求第k个最小数的值
    算法之重建二叉树
    AFNetWorking 上传功能使用及源码分析
    图片Alpha预乘的作用[转]
    C#/.NET 学习之路——从入门到放弃
  • 原文地址:https://www.cnblogs.com/phpway/p/2890277.html
Copyright © 2011-2022 走看看