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
杏林同学录(四)
Oct 09 PHP
php数组对百万数据进行排除重复数据的实现代码
Jun 08 PHP
深入探讨PHP中的内存管理问题
Aug 31 PHP
PHPer 需要了解的 5 个 Composer 小技巧
Aug 18 PHP
服务器上配置PHP运行环境教程
Feb 12 PHP
php将字符串全部转换成大写或者小写的方法
Mar 17 PHP
CI框架AR操作(数组形式)实现插入多条sql数据的方法
May 18 PHP
php+jQuery+Ajax简单实现页面异步刷新
Aug 08 PHP
php+ajax简单实现全选删除的方法
Dec 06 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
May 12 PHP
PHP+redis实现微博的拉模型案例详解
Jul 10 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
全国FM电台频率大全 - 7 吉林省
2020/03/11 无线电
php学习笔记之 函数声明
2011/06/09 PHP
解析php二分法查找数组是否包含某一元素
2013/05/23 PHP
PHP封装的非对称加密RSA算法示例
2018/05/28 PHP
jquery 可拖拽的窗体控件实现代码
2010/03/21 Javascript
jQuery 无刷新分页实例代码
2013/11/12 Javascript
JQuery实现简单的图片滑动切换特效
2015/11/22 Javascript
JS实现对中文字符串进行utf-8的Base64编码的方法(使其与Java编码相同)
2016/06/21 Javascript
JavaScript动态添加css样式和script标签
2016/07/19 Javascript
js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
2016/12/12 Javascript
VUE实现移动端列表筛选功能
2019/08/23 Javascript
Servlet返回的数据js解析2种方法
2019/12/12 Javascript
js实现tab栏切换效果
2020/08/02 Javascript
[04:29]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/02/01 DOTA
详解Python中dict与set的使用
2015/08/10 Python
python九九乘法表的实例
2017/09/26 Python
python测试mysql写入性能完整实例
2018/01/18 Python
python 3.3 下载固定链接文件并保存的方法
2018/12/18 Python
利用python修改json文件的value方法
2018/12/31 Python
Python Django框架单元测试之文件上传测试示例
2019/05/17 Python
如何通过python的fabric包完成代码上传部署
2019/07/29 Python
Django静态资源部署404问题解决方案
2020/05/11 Python
解决Pytorch自定义层出现多Variable共享内存错误问题
2020/06/28 Python
使用HTML5 Geolocation实现一个距离追踪器
2018/04/09 HTML / CSS
为世界各地的女性设计和生产时尚服装:ROMWE
2016/09/17 全球购物
Joe Fresh官网:加拿大时尚品牌和零售连锁店
2016/11/30 全球购物
医院护士的求职信范文
2013/12/26 职场文书
渡河少年教学反思
2014/02/12 职场文书
高三学生评语大全
2014/04/25 职场文书
中国梦演讲稿3分钟
2014/08/19 职场文书
学校党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
安全隐患整改报告
2014/11/06 职场文书
给老婆道歉的话
2015/01/20 职场文书
2015年医德考评自我评价
2015/03/03 职场文书
客户经理岗位职责大全
2015/04/09 职场文书
2016年第十四个公民道德宣传日活动总
2016/04/01 职场文书