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 相关文章推荐
PHP获取类中常量,属性,及方法列表的方法
Apr 09 PHP
php session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
Nov 27 PHP
用Php编写注册后Email激活验证的实例代码
Mar 11 PHP
用PHP来计算某个目录大小的方法
Apr 01 PHP
php命令行使用方法和命令行参数说明
Apr 08 PHP
php检测apache mod_rewrite模块是否安装的方法
Mar 14 PHP
php实现用已经过去多长时间的方式显示时间
Jun 05 PHP
php简单图像创建入门实例
Jun 10 PHP
WordPress中创建用户角色的相关PHP函数使用详解
Dec 25 PHP
Thinkphp 中 distinct 的用法解析
Dec 14 PHP
Laravel框架下载,安装及路由操作图文详解
Dec 04 PHP
PHP设计模式(六)桥连模式Bridge实例详解【结构型】
May 02 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
基于PHP异步执行的常用方式详解
2013/06/03 PHP
thinkphp的c方法使用示例
2014/02/24 PHP
php通过Chianz.com获取IP地址与地区的方法
2015/01/14 PHP
PHP登录(ajax提交数据和后台校验)实例分享
2016/12/29 PHP
JS面向对象、prototype、call()、apply()
2009/05/14 Javascript
jQuery 顺便学习下CSS选择器 奇偶匹配nth-child(even)
2010/05/24 Javascript
extjs 如何给column 加上提示
2014/07/29 Javascript
浅谈JavaScript函数节流
2014/12/09 Javascript
jQuery源码分析之jQuery.fn.each与jQuery.each用法
2015/01/23 Javascript
jquery比较简洁的软键盘特效实现方法
2015/03/19 Javascript
深入学习jQuery Validate表单验证
2016/01/18 Javascript
JavaScript代码实现左右上下自动晃动自动移动
2016/04/08 Javascript
Bootstrap安装环境配置教程分享
2016/05/27 Javascript
javascript js 操作数组 增删改查的简单实现
2016/06/20 Javascript
js传值后台中文出现乱码的解决方法
2016/06/30 Javascript
ros::spin() 和 ros::spinOnce()函数的区别及详解
2016/10/01 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
2016/10/05 Javascript
JS简单生成随机数(随机密码)的方法
2017/05/11 Javascript
JS实现的四级密码强度检测功能示例
2017/05/11 Javascript
使用requirejs模块化开发多页面一个入口js的使用方式
2017/06/14 Javascript
浅谈Angular4实现热加载开发旅程
2017/09/08 Javascript
jQuery实现鼠标响应式淘宝动画效果示例
2018/02/13 jQuery
个人小程序接入支付解决方案
2019/05/23 Javascript
[02:54]DOTA2亚洲邀请赛 VG战队出场宣传片
2015/02/07 DOTA
[03:24][TI9纪实] Dota奶爸
2019/08/22 DOTA
python验证身份证信息实例代码
2019/05/06 Python
Python格式化输出--%s,%d,%f的代码解析
2020/04/29 Python
HTML5之SVG 2D入门2—图形绘制(基本形状)介绍及使用
2013/01/30 HTML / CSS
小狗电器官方商城:中国高端吸尘器品牌
2017/03/29 全球购物
static函数与普通函数有什么区别
2015/12/25 面试题
毕业自我鉴定书
2014/03/24 职场文书
村委会贫困证明范文
2014/09/21 职场文书
乡镇党的群众路线对照检查材料
2014/09/24 职场文书
铅球加油稿100字
2014/09/26 职场文书
简易版租房协议书范本
2014/10/13 职场文书
圆明园纪录片观后感
2015/06/03 职场文书