PHP中使用smarty生成静态文件的例子


Posted in PHP onApril 24, 2014

首先先要把需要静态化的内容填充到模版中去

#eg.这个是静态化首页的
function staticIndex(){
$newslist = $article->getArticles(null,54,'DESC',1,6,false,1,2,'',0,0,1);
   if($newslist){
    foreach($newslist as $k=>$v){
     $newslist[$k]['title_all'] = $v['title'];
     $newslist[$k]['title'] = cutstr($v['title'],36,'…');
    }
    $smarty->assign('newslist',$newslist);
   }
$content = '';
$content = $smarty->fetch('index.html',true);//这是Smarty自带的生成静态页面的函数
$static_name = ROOT_PATH.'index.html';//这是生成静态页面当前的路径文件
fopen($static_name,'a');//打开这个文件
@file_put_contents($static_name,$content);//最后写进去
return true;
}
//静态化列表页,按类别不同经行静态化
function staticContent(){//需要静态话的条数
  $ids = array();//获取所有的内容
   $ids = $this->getListIds();//这个方法获取所有的内容,下面红字部分对应它的方法
   foreach($ids as $k=>$value){
    //echo $value['catid'];
    if(!file_exists(ROOT_PATH.'demo/')){//判断根目录下面有没有这个文件夹,如果没有则创建demo这个文件夹
     mkdir(ROOT_PATH.'demo/');
    }
     if(!file_exists(ROOT_PATH.'demo/'.$value['catid'])){//判断这个文件夹下面有没有对应的类别文件夹
      mkdir(ROOT_PATH.'demo/'.$value['catid']);
      }
     $html_content = $this->getDemoContent($value['demoid']);
     $static_name = ROOT_PATH.'demo/'.$value['catid'].'/'.$value['demoid'].'.html';
     fopen($static_name,'a');
     @file_put_contents($static_name,$html_content);
    }
  return true;
  }
  //拿出需要静态化的页面ID
function getListIds(){
   $sql = "select * from {$this->tablepre}demo order by demoid asc";
   $rs = $this->db->getAll($sql);
   if($rs){
     return $rs;
   }else{
   return false;
   }
}
//content单页静态化
function getDemoContent($id){
   global $smarty,$view_templates,$admin_templates;
   loadModel(array('demo'));
   $demo = new demo();
   $content = '';
   $smarty->template_dir = ROOT_PATH.$view_templates;
   $getMobanOne = $this->getMobanDetail($id);
   $mobandetail = $demo->MobanList($id);
    foreach($mobandetail as $k=>$v){
       $smarty->assign($k,$v);
       }
   $this->catid = $getMobanOne['catid'];
   $smarty->assign('pre_title',$mobandetail['membername']);
   $smarty->assign('mobandetail',$mobandetail);
   $content = $smarty->fetch('demo_show.html',true);
   $smarty->template_dir = ROOT_PATH.$view_templates;
   return $content;
}

以前用的那个生成静态页面每次都要执行PHP文件,然后才能生成,现在我写的这个就是由人控制的,想生成就生成,很方便,希望能给大家带来方便,祝大家工作愉快。

PHP 相关文章推荐
杏林同学录(一)
Oct 09 PHP
php录入页面中动态从数据库中提取数据的实现
Oct 09 PHP
MYSQL 小技巧 -- LAST_INSERT_ID
Nov 24 PHP
开启CURL扩展,让服务器支持PHP curl函数(远程采集)
Mar 19 PHP
基于HBase Thrift接口的一些使用问题及相关注意事项的详解
Jun 03 PHP
php中error与exception的区别及应用
Jul 28 PHP
异步加载技术实现当滚动条到最底部的瀑布流效果
Sep 16 PHP
php读取远程gzip压缩网页的方法
Dec 29 PHP
php简单判断文本编码的方法
Jul 30 PHP
Laravel 的数据库迁移的方法
Jul 31 PHP
PHP实现会员账号单唯一登录的方法分析
Mar 07 PHP
php模式设计之观察者模式应用实例分析
Sep 25 PHP
php过滤html中的其他网站链接的方法(域名白名单功能)
Apr 24 #PHP
php导出csv数据在浏览器中输出提供下载或保存到文件的示例
Apr 24 #PHP
smarty模板中使用get、post、request、cookies、session变量的方法
Apr 24 #PHP
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
Apr 24 #PHP
php获取中文拼音首字母类和函数分享
Apr 24 #PHP
PHP获取浏览器信息类和客户端地理位置的2个方法
Apr 24 #PHP
php中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子
Apr 24 #PHP
You might like
东芝TOSHIBA RP-F11电路分析
2021/03/02 无线电
解析web文件操作常见安全漏洞(目录、文件名检测漏洞)
2013/06/29 PHP
Yii使用CLinkPager分页实例详解
2014/07/23 PHP
PHP语法自动检查的Vim插件
2014/08/11 PHP
详解PHP swoole process的使用方法
2017/08/26 PHP
实例讲解PHP表单处理
2019/02/15 PHP
javascript 数组排序函数
2009/08/20 Javascript
7个Javascript地图脚本整理
2009/10/20 Javascript
jquery的$(document).ready()和onload的加载顺序
2010/05/26 Javascript
JQuery DataTable删除行后的页面更新利用Ajax解决
2013/05/17 Javascript
JavaScript通过this变量快速找出用户选中radio按钮的方法
2015/03/23 Javascript
Bootstrap每天必学之导航条(二)
2016/03/01 Javascript
jQuery焦点图轮播效果实现方法
2016/12/19 Javascript
微信小程序点击控件修改样式实例详解
2017/07/07 Javascript
Node.JS更改Windows注册表Regedit的方法小结
2017/08/18 Javascript
Vue精简版风格指南(推荐)
2018/01/30 Javascript
web前端页面生成exe可执行文件的方法
2018/02/08 Javascript
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
2019/03/02 NodeJs
微信小程序中使用Async-await方法异步请求变为同步请求方法
2019/03/28 Javascript
Vue 权限控制的两种方法(路由验证)
2019/08/16 Javascript
js基础之事件捕获与冒泡原理
2019/10/09 Javascript
Vue中点击active并第一个默认选中功能的实现
2020/02/24 Javascript
在pycharm下设置自己的个性模版方法
2019/07/15 Python
Python脚本打包成可执行文件过程解析
2020/10/20 Python
IE下实现类似CSS3 text-shadow文字阴影的几种方法
2011/05/11 HTML / CSS
日本高端护肤品牌:Tatcha
2016/08/29 全球购物
Jacadi Paris美国官方网站:法国童装品牌
2017/10/15 全球购物
澳大利亚购买太阳镜和眼镜网站:Glamoureyes
2020/09/22 全球购物
2019年c语言经典面试题目
2016/08/17 面试题
单位门卫岗位职责
2013/12/20 职场文书
餐饮投资计划书
2014/04/25 职场文书
2016年区委书记抓基层党建工作公开承诺书
2016/03/25 职场文书
如何理解python接口自动化之logging日志模块
2021/06/15 Python
如何在Python中妥善使用进度条详解
2022/04/05 Python
MySQL导致索引失效的几种情况
2022/06/25 MySQL
Python绘制散点图之可视化神器pyecharts
2022/07/07 Python