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 连接mssql数据库 初学php笔记
Mar 01 PHP
让PHP COOKIE立即生效,不用刷新就可以使用
Mar 09 PHP
PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
Apr 09 PHP
php开发文档 会员收费1期
Aug 14 PHP
php 定义404页面的实现代码
Nov 19 PHP
php cli 小技巧
Jun 03 PHP
thinkphp3.x中cookie方法的用法分析
May 19 PHP
PHPExcel简单读取excel文件示例
May 26 PHP
thinkPHP+ajax实现统计页面pv浏览量的方法
Mar 15 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
Apr 05 PHP
PHP 文件锁与进程锁的使用示例
Aug 07 PHP
浅谈Laravel队列实现原理解决问题记录
Aug 19 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同时支持GIF、png、JPEG
2006/10/09 PHP
一个PHP的远程图片抓取函数分享
2013/09/25 PHP
避免Smarty与CSS语法冲突的方法
2015/03/02 PHP
php简单smarty入门程序实例
2015/06/11 PHP
Yii2中关联查询简单用法示例
2016/08/10 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
JavaScript与函数式编程解释
2007/04/27 Javascript
javascript xml为数据源的下拉框控件
2009/07/07 Javascript
jquery分页插件AmSetPager(自写)
2013/04/15 Javascript
JavaScript中创建字典对象(dictionary)实例
2015/03/31 Javascript
JavaScript面向对象分层思维全面解析
2016/11/22 Javascript
Angular2学习笔记——详解路由器模型(Router)
2016/12/02 Javascript
vue2实现可复用的轮播图carousel组件详解
2017/11/27 Javascript
vue登录注册及token验证实现代码
2017/12/14 Javascript
Nodejs中crypto模块的安全知识讲解
2018/01/03 NodeJs
微信小程序实现人脸识别
2018/05/25 Javascript
JS实现深度优先搜索求解两点间最短路径
2019/01/17 Javascript
webpack4.x下babel的安装、配置及使用详解
2019/03/07 Javascript
详解vuex的简单todolist例子
2019/07/14 Javascript
[00:20]TI9不朽观赛名额抽取
2019/08/05 DOTA
python实现DNS正向查询、反向查询的例子
2014/04/25 Python
跟老齐学Python之??碌某?? target=
2014/09/12 Python
教大家使用Python SqlAlchemy
2016/02/12 Python
解决Python中字符串和数字拼接报错的方法
2016/10/23 Python
python定向爬虫校园论坛帖子信息
2018/07/23 Python
PYTHON实现SIGN签名的过程解析
2019/10/28 Python
美国在线购物频道:Shop LC
2019/04/21 全球购物
乌克兰品牌化妆品和香水在线商店:Bomond
2020/01/14 全球购物
求两个数的乘积和商数,该作用由宏定义来实现
2013/03/13 面试题
什么是数据抽象
2016/11/26 面试题
通信工程专业毕业生推荐信
2013/12/25 职场文书
《一本男孩子必读的书》教学反思
2014/02/19 职场文书
毕业生应聘求职信
2014/07/10 职场文书
人事经理岗位职责范本
2014/08/04 职场文书
ktv好的活动方案
2014/08/17 职场文书
如何设置多台电脑共享打印机?多台电脑共享打印机的方法
2022/04/08 数码科技