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函数
Oct 09 PHP
php生成随机密码的几种方法
Jan 17 PHP
基于initPHP的框架介绍
Apr 18 PHP
PHP编码规范的深入探讨
Jun 06 PHP
php统计时间和内存使用情况示例分享
Mar 13 PHP
php Imagick获取图片RGB颜色值
Jul 28 PHP
PHP正则验证Email的方法
Jun 15 PHP
Yii使用smsto短信接口的函数demo示例
Jul 13 PHP
ThinkPHP和UCenter接口冲突的解决方法
Jul 25 PHP
PHP自定义递归函数实现数组转JSON功能【支持GBK编码】
Jul 17 PHP
详解Laravel5.6 Passport实现Api接口认证
Jul 27 PHP
详解php命令注入攻击
Apr 06 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获取网页内容方法总结
2008/12/04 PHP
php比较两个字符串长度的方法
2015/07/13 PHP
php从数据库中读取特定的行(实例)
2017/06/02 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
超棒的javascript页面顶部卷动广告效果
2007/12/01 Javascript
javascript document.compatMode兼容性
2010/02/23 Javascript
jQuery ajax BUG:object doesn't support this property or method
2010/07/06 Javascript
分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]
2012/10/12 Javascript
node.js中的buffer.Buffer.byteLength方法使用说明
2014/12/10 Javascript
微信JS接口汇总及使用详解
2015/01/09 Javascript
JavaScript实现弹出模态窗体并接受传值的方法
2016/02/12 Javascript
Bootstrap表单布局
2016/07/19 Javascript
js内置对象处理_打印学生成绩单的简单实现
2016/09/24 Javascript
js实现颜色阶梯渐变效果(Gradient算法)
2017/03/21 Javascript
Vue中之nextTick函数源码分析详解
2017/10/17 Javascript
js数组方法reduce经典用法代码分享
2018/01/07 Javascript
npm scripts 使用指南详解
2018/10/08 Javascript
layui的布局和表格的渲染以及动态生成表格的方法
2019/09/18 Javascript
vue中el-input绑定键盘按键(按键修饰符)
2020/07/22 Javascript
python实现猜数字游戏(无重复数字)示例分享
2014/03/29 Python
Python+Wordpress制作小说站
2017/04/14 Python
Collatz 序列、逗号代码、字符图网格实例
2017/06/22 Python
Python设计模式之模板方法模式实例详解
2019/01/17 Python
网易2016研发工程师编程题 奖学金(python)
2019/06/19 Python
Python学习笔记之错误和异常及访问错误消息详解
2019/08/08 Python
python绘制无向图度分布曲线示例
2019/11/22 Python
python实现引用其他路径包里面的模块
2020/03/09 Python
django模板获取list中指定索引的值方式
2020/05/14 Python
python随机模块random的22种函数(小结)
2020/05/15 Python
Python环境管理virtualenv&virtualenvwrapper的配置详解
2020/07/01 Python
html5指南-5.使用web storage存储键值对的数据
2013/01/07 HTML / CSS
工作中的自我评价如何写好
2013/10/28 职场文书
入党综合考察材料
2014/06/02 职场文书
黑暗中的舞者观后感
2015/06/18 职场文书
2016年暑期教师培训心得体会
2016/01/09 职场文书
聊聊pytorch测试的时候为何要加上model.eval()
2021/05/23 Python