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 相关文章推荐
基于qmail的完整WEBMAIL解决方案安装详解
Oct 09 PHP
php中变量及部分适用方法
Mar 27 PHP
PHP学习之整理字符串
Apr 17 PHP
解析php中session的实现原理以及大网站应用应注意的问题
Jun 17 PHP
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
Jun 12 PHP
php链表用法实例分析
Jul 09 PHP
Yii使用Captcha验证码的方法
Dec 28 PHP
PHP实现的浏览器检查类
Apr 11 PHP
php抽象方法和抽象类实例分析
Dec 07 PHP
php正则判断是否为合法身份证号的方法
Mar 16 PHP
PHP小白必须要知道的php基础知识(超实用)
Oct 10 PHP
PHP变量的作用范围实例讲解
Dec 22 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读写文件的方法(生成HTML)
2006/11/27 PHP
PHP pathinfo()获得文件的路径、名称等信息说明
2011/09/13 PHP
yii2项目实战之restful api授权验证详解
2017/05/20 PHP
YII框架学习笔记之命名空间、操作响应与视图操作示例
2019/04/30 PHP
怎么选择Javascript框架(Javascript Framework)
2013/11/22 Javascript
jQuery中.live()方法的用法深入解析
2013/12/30 Javascript
jQuery中removeProp()方法用法实例
2015/01/05 Javascript
JavaScript如何获取数组最大值和最小值
2015/11/18 Javascript
JavaScript观察者模式(经典)
2015/12/09 Javascript
Base64(二进制)图片编码解析及在各种浏览器的兼容性处理
2017/02/09 Javascript
Nodejs 发送Post请求功能(发短信验证码例子)
2017/02/09 NodeJs
Ajax实现不刷新取最新商品
2017/03/01 Javascript
Vue.js使用$.ajax和vue-resource实现OAuth的注册、登录、注销和API调用
2017/05/10 Javascript
微信小程序tabbar不显示解决办法
2017/06/08 Javascript
纯js封装的ajax功能函数与用法示例
2018/05/14 Javascript
[01:23:59]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 VP vs Secret
2018/04/03 DOTA
PYTHON正则表达式 re模块使用说明
2011/05/19 Python
python开发之基于thread线程搜索本地文件的方法
2015/11/11 Python
python3.6.3转化为win-exe文件发布的方法
2018/10/31 Python
Django中如何使用sass的方法步骤
2019/07/09 Python
python利用7z批量解压rar的实现
2019/08/07 Python
Tensorflow轻松实现XOR运算的方式
2020/02/03 Python
Python3爬虫中关于中文分词的详解
2020/07/29 Python
Python:__eq__和__str__函数的使用示例
2020/09/26 Python
安装Anaconda3及使用Jupyter的方法
2020/10/27 Python
pycharm 快速解决python代码冲突的问题
2021/01/15 Python
UGG雪地靴荷兰官网:UGG荷兰
2016/09/09 全球购物
英国巧克力贸易公司:Chocolate Trading Company
2017/03/21 全球购物
澳大利亚最大的护发和护肤品购物网站:RY
2019/12/26 全球购物
学院领导推荐信
2013/10/30 职场文书
环保专项行动方案
2014/05/12 职场文书
公民授权委托书范本
2014/09/17 职场文书
民政局个人整改措施
2014/09/24 职场文书
学习退步检讨书
2014/09/28 职场文书
手术室消毒隔离制度
2015/08/05 职场文书
css3 实现文字闪烁效果的三种方式示例代码
2021/04/25 HTML / CSS