广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    thinkphp页面真静态化实现方法

    来源:网络收集  点击:  时间:2024-02-15
    【导读】:
    常说的页面静态有两种,一种是伪静态,即url 重写,一种是真静态化。下面小编给大家介绍一下真静态化工具/原料morethinkphpphpsublime方法/步骤1/9分步阅读

    在执行之前,要在根目录下的程序入口文件index.php中进行如下配置:

    //生成静态页面的文件位置define(HTML_PATH, ./HTML/);

    2/9

    参数分别为(栏目或内容的URL路径,静态文件保存路径,生成静态文件的文件名):

    function createHtml($url,$dir,$filename){

    $content = file_get_contents($url); //获取内容

    if (!is_dir($dir)){

    mkdir(iconv(UTF-8, GBK, $dir),0777,true); //创建目录(777权限)

    }

    //处理导航链接

    $listurls = /\/Admin\/list\/articleList\/id\/(.*?)/;

    preg_match_all($listurls,$content,$matchlist);//根据需求自行修改正则

    foreach ( $matchlist as $key = $value ) {

    $value = trim($value);

    $where = $value;

    $cat = M(category)-where($where)-limit(1)-find();

    $listurl = \/.$dir./.$value..html\;

    $content = str_replace ( $matchlist, $listurl, $content );

    }

    //处理文章列表页

    //列表页链接进入内容页

    $infourl = /href=\/App\/list\/articleInfo\/id\/(.*?)/;

    preg_match_all($infourl,$content,$matchlist);//根据需求自行修改正则

    foreach($matchlist as $key = $value){

    $value = trim($value);

    $where = $value;

    $cateid = M(article)-where($where)-limit(1)-getField(category_id);

    $cat = M(category)-where(id= . $cateid)-limit(1)-find();

    $info = href=/.$dir./.$cat./.$value..html;

    $content = str_replace ( $matchlist, $info, $content );

    }

    //文章列表分页

    $page = /a (.*?) href=\/Admin\/List\/articleList\/id\/(.*?)\/p\/(.*?)/;

    preg_match_all($page,$content,$matchpage);

    foreach ( $matchpage as $key1 = $value1 ) {

    foreach ( $matchpage as $key2 = $value2 ) {

    if($key1 == $key2){

    $value1 = trim($value1);

    $value2 = trim($value2);

    $url = a .$value2. href=/.$dir./index_.$value1..html;

    $content = str_replace ( $matchpage, $url, $content );

    }

    }

    } //生成的文件路径与文件名

    $path = $dir./.$filename..html;

    if(file_exists($path)){

    unlink($path); //删除已有的同名文件

    }

    //打开文件,如果文件不存在则尝试创建之。 $fp = fopen($path, w); $flag = fwrite($fp, $content);//写入内容

    fclose($fp);

    return $flag; //返回写入标识

    }

    3/9

    //列表页面静态化

    public function sethtml(){

    $id = I(param.id,,trim);

    $m = M(category);

    if (!$id) {

    return 0;//执行失败

    }

    $catdir = trim($id);

    $where=$catdir;

    $cat = $m-where($where)-limit(1)-find();

    if (empty($cat)) {

    return 0;//执行失败

    }

    $psize = 10; //每个分页展示几条数据

    $where = $cat;

    $count = M(article)-where($where)-count();//当前分类下文章总数

    $pagecount = ceil(intval($count)/intval($psize)); //分页数(向上取整)

    $host = I(server.HTTP_HOST);

    //多页面,列表分页

    if($pagecount 1){

    for($i=1;$i=$pagecount;$i++){

    $url = http://.$host./Admin/list/articleList/id/.$catdir./p/.$i.;

    $dir = ./news/.A(base)-getPinyin($cat);

    $dirs = ./news;

    $filename = index_.$i; //分类名

    $res = $this-createHtml($url,$dir,$filename);//创建静态文件

    if(!$res){

    $save = /news/.A(base)-getPinyin($cat);

    $up_url = M(category)-where(id = $id)-setfield(url,$save);

    return 0;//执行失败

    }

    }

    }

    //单页面

    $url = http://.$host./Admin/list/articleList/id/.$catdir.;

    $dir = ./news/.A(base)-getPinyin($cat);

    $dirs = ./news;

    $filename = index; //分类名当文件名

    $res = $this-createHtml($url,$dir,$filename);

    if($res){

    $save = /news/.A(base)-getPinyin($cat);

    $up_url = M(category)-where(id = $id)-setfield(url,$save);

    return 1;//执行成功

    }else{

    return 0;//执行失败

    }

    }

    4/9

    列表页静态化的‍难点就是,根据不同分页链接中的p参数的不同进行静态化,在判断当前有几个分页之后,如果只有一个页面就生成一个文件,如果有多个就循环执行生成多个文件。

    5/9

    CREATE TABLE `news_category` (

    `id` int(11) NOT NULL AUTO_INCREMENT,

    `pid` int(11) NOT NULL,

    `name` varchar(20) NOT NULL COMMENT 类别名称,

    `alias` varchar(20) NOT NULL COMMENT 别名,

    `sort` int(11) NOT NULL COMMENT 排序,

    `url` varchar(255) NOT NULL,

    `lv` int(11) NOT NULL,

    PRIMARY KEY (`id`)

    ) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COMMENT=新闻栏目表;

    6/9

    //内容页面静态化

    public function sethtmls(){

    $id = I(param.id,,trim);

    if (!$id) {

    return 0;

    }

    $where = $id;

    $cateid = M(article)-where($where)-limit(1)-getField(category_id);

    $cat = M(category)-where(id= . $cateid)-limit(1)-find();

    if (empty($cat)) {

    return 0;

    }

    $dir = ./news/.A(base)-getPinyin($cat)./.date(Ymd);

    $host = I(server.HTTP_HOST);

    $url = http://.$host./Admin/list/articleInfo/id/.$id.;

    $filename = $id; //ID当文件名

    $res = $this-createHtml($url,$dir,$filename);

    if($res){

    $save = news/.A(base)-getPinyin($cat)./.date(Ymd)./.$id..html;

    $up_url = M(article)-where(id = $id)-setfield(url,$save);

    return 1;

    }else{

    return 0;

    }

    }

    7/9

    CREATE TABLE `news_article` (

    `id` int(11) NOT NULL AUTO_INCREMENT,

    `category_id` int(11) NOT NULL COMMENT 新闻栏目id,

    `publisher` int(11) NOT NULL COMMENT 发布者,

    `title` varchar(50) NOT NULL COMMENT 文章标题,

    `content` text NOT NULL COMMENT 新闻内容,

    `keywords` varchar(255) NOT NULL COMMENT 关键字,

    `flag` varchar(11) NOT NULL COMMENT 属性,

    `description` varchar(255) NOT NULL COMMENT 描述,

    `img` varchar(255) NOT NULL,

    `url` varchar(255) NOT NULL COMMENT 静态url,

    `addtime` varchar(20) NOT NULL COMMENT 添加时间,

    PRIMARY KEY (`id`)

    ) ENGINE=MyISAM AUTO_INCREMENT=51 DEFAULT CHARSET=utf8 COMMENT=新闻表;

    8/9

    //首页页面静态化

    public function setindexhtml(){

    $host = I(server.HTTP_HOST);

    $url = http://.$host./Admin/list/article;

    $dir = ./; //存放路径

    $filename = index; //分类名当文件名

    $res = $this-createHtml($url,$dir,$filename);

    if($res){

    return 1;

    }else{

    return 0;

    }

    }

    9/9

    注意页面模板引用的css,js的地址

    防止生成的静态页面找不到对应的css,js路径

    注意事项

    帮忙点赞、投票哦!!!

    PHP静态化THINKPHP网页
    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.ff371.cn/art_44733.html

    相关资讯

    ©2019-2020 http://www.ff371.cn/ 国ICP备20009186号05-14 21:45:41  耗时:0.021
    0.0215s