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 socket方式提交的post详解
Jul 19 PHP
Uncaught exception com_exception with message Failed to create COM object
Jan 11 PHP
PHP代码保护--Zend Guard的使用详解
Jun 03 PHP
解决ajax+php中文乱码的方法详解
Jun 09 PHP
PHP延迟静态绑定示例分享
Jun 22 PHP
php魔术函数__call()用法实例分析
Feb 13 PHP
DEDECMS首页调用图片集里的多张图片
Jun 05 PHP
[原创]ThinkPHP中SHOW_RUN_TIME不能正常显示运行时间的解决方法
Oct 10 PHP
php+ajax实现无刷新分页
Nov 18 PHP
PHP实现的构造sql语句类实例
Feb 03 PHP
php生成酷炫的四个字符验证码
Apr 22 PHP
thinkPHP5使用Rabc实现权限管理
Aug 28 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中global和$GLOBALS[]的分析之一
2012/02/02 PHP
php获取远程文件的内容和大小
2015/11/03 PHP
PHP的PDO操作简单示例
2016/03/30 PHP
详解PHP中foreach的用法和实例
2016/10/25 PHP
Yii2中简单的场景使用介绍
2017/06/02 PHP
javascript学习笔记(九) js对象 设计模式
2012/06/19 Javascript
Javascript对象属性方法汇总
2013/11/21 Javascript
jquery中交替点击事件的实现代码
2014/02/14 Javascript
JavaScript获取当前网页标题(title)的方法
2015/04/03 Javascript
浅谈Javascript实现继承的方法
2015/07/06 Javascript
基于jQuery实现响应式圆形图片轮播特效
2015/11/25 Javascript
日常收集整理的JavaScript常用函数方法
2015/12/10 Javascript
快速掌握Node.js模块封装及使用
2016/03/21 Javascript
javascript检测移动设备横竖屏
2016/05/21 Javascript
jquery层级选择器的实现(匹配后代元素div)
2016/09/05 Javascript
JavaScript中String对象的方法介绍
2017/01/04 Javascript
基于Vue实现timepicker
2017/04/25 Javascript
layui分页效果实现代码
2017/05/19 Javascript
Vue中的基础过渡动画及实现原理解析
2018/12/04 Javascript
说说Vue.js中的functional函数化组件的使用
2019/02/12 Javascript
简单了解node npm cnpm的具体使用方法
2019/02/27 Javascript
layui下拉框获取下拉值(select)的例子
2019/09/10 Javascript
利用python如何在前程无忧高效投递简历
2019/05/07 Python
vscode 配置 python3开发环境的方法
2019/09/19 Python
Python imutils 填充图片周边为黑色的实现
2020/01/19 Python
捷克家具销售网站:SCONTO Nábytek
2020/01/02 全球购物
介绍一下MYSQL常用的优化技巧
2012/10/25 面试题
幸福家庭标语
2014/06/27 职场文书
施工单位安全责任书
2014/07/24 职场文书
2014企业领导班子四风对照检查材料思想汇报
2014/09/17 职场文书
2015元旦节寄语
2014/12/08 职场文书
先进单位事迹材料
2014/12/25 职场文书
售房协议书范本
2015/08/11 职场文书
公司会议开幕词
2016/03/03 职场文书
MySQL Router的安装部署
2021/04/24 MySQL
详解解Django 多对多表关系的三种创建方式
2021/08/23 Python