thinkphp6-tp6全站生成html静态页面方法

云游道人 2025-09-06 821 阅读 0评论

tp6实现具体代码:

将以下代码放入公共函数中:

/**
* @param array $param
* @return string
* 生成 HTML 文件名
*/
function buildHtml($param = []){
   if(empty($param)){
       $param = request()->get();
   }
   //生成静态
   $staticHtmlDir = "html/" . \think\facade\Request::controller();
   //目录不存在,则创建
   if(!file_exists($staticHtmlDir)){
       mkdir($staticHtmlDir,0755,true);
   }
   //参数md5
   $param = md5(json_encode($param));
   return $staticHtmlDir .'/'.\think\facade\Request::action() . '_'. $param .'.html';
}

/**
* @param array $param
* @return string
* 判断 HTML 是否存在静态
*/
function beforeBuild($param = []){
   $staticHtmlFile = buildHtml($param);
   //静态文件存在,并且没有过期
   if(file_exists($staticHtmlFile) && filectime($staticHtmlFile)>=time()-60*60*24*5) {
       include_once $staticHtmlFile;
       exit();
   }
}


/**
* @param $html
* @param array $param
* @return string
* 开始生成 HTML 静态文件
*/
function afterBuild($html, array $param=[]){
   $staticHtmlFile = buildHtml($param);
   if (!empty($staticHtmlFile) && !empty($html)) {
       if (file_exists($staticHtmlFile)) {
           \unlink($staticHtmlFile);
       }
       if (file_put_contents($staticHtmlFile, $html)) {
           include_once $staticHtmlFile;
           exit();
       }
   }
}

/**
* @param int $star
* @param array $param
* @return \think\response\View
* 控制视图是否生成 HTML
*/
function ViewHtml($star=0,$param=[]){
   $html = \think\facade\View::fetch();
   $open = Cfg('open_html');
   if($open){  //是否生成html静态页面
       if($star){
           //重新生成html
           afterBuild($html,$param);
       }
       beforeBuild($param);
       afterBuild($html,$param);
   }
   return $html;
}

使用示例:

在控制器使用

class Index extends BaseController
{
   public function index()
   {
       //调用方法
       return ViewHtml();
   }
}


喜欢就支持以下吧
点赞 1

发表评论

快捷回复: 表情:
aoman baiyan bishi bizui cahan ciya dabing daku deyi doge fadai fanu fendou ganga guzhang haixiu hanxiao zuohengheng zhuakuang zhouma zhemo zhayanjian zaijian yun youhengheng yiwen yinxian xu xieyanxiao xiaoku xiaojiujie xia wunai wozuimei weixiao weiqu tuosai tu touxiao tiaopi shui se saorao qiudale qinqin qiaoda piezui penxue nanguo liulei liuhan lenghan leiben kun kuaikule ku koubi kelian keai jingya jingxi jingkong jie huaixiao haqian aini OK qiang quantou shengli woshou gouyin baoquan aixin bangbangtang xiaoyanger xigua hexie pijiu lanqiu juhua hecai haobang caidao baojin chi dan kulou shuai shouqiang yangtuo youling
提交
评论列表 (有 0 条评论, 821人围观)

最近发表

热门文章

最新留言

热门推荐

标签列表