• tp5生成纯静态html


    这只是一个demo

    第一步:使用php的ob缓存实现页面静态化

    控制器方法:

    <?php
    namespace app	estcontroller;
    use app	estmodelDetailModel;
    use thinkDb;
    
    class Detail extends Base
    {
        public function index()
        {
            $id = input('param.id');
            $fileName='./html/'.$id.'.html';
            $model = new DetailModel();
            $detail = $model->getDetail($id);
            $this->assign('detail',$detail);
            $data= $this->fetch();
            file_put_contents($fileName,$data);
            //echo $data; //如果你想访问pathinfo方式也可以打开 就echo一下 如果后台生成,就可以关闭
        }
    }

    第二步:后台手动执行生成html文件

    html界面 ,将form提交到iframe

    <div class="ibox-content">
                        <form class="form-horizontal" name="import" id="import" enctype="multipart/form-data" method="post" action="{:url('createlistAction')}" target="result">
                            <div class="hr-line-dashed"></div>
                            <div class="form-group">
                                <label class="col-sm-3 control-label">选择栏目:</label>
                                <div class="col-sm-4 input-group">
                                    <select name="cate" class="form-control">
                                        <option value="0">--生成全部分类--</option>
                                        {foreach name="$cate" item="v"}
                                        <option value="{$v.id}" style="margin-left:55px;">{$v.name}</option>
                                        {/foreach}
                                    </select>
                                </div>
                            </div>
                            <div class="hr-line-dashed"></div>
                            <div class="form-group">
                                <div class="col-sm-4 col-sm-offset-3">
                                    <button class="btn btn-primary" type="submit"><i class="fa fa-save"></i> 生成栏目</button>&nbsp;&nbsp;&nbsp;
                                    <a class="btn btn-danger" href="javascript:history.go(-1);"><i class="fa fa-close"></i> 返回</a>
                                </div>
                            </div>
                        </form>
                        <iframe name="result" style=" 100%;border: #fff solid 0px;"></iframe>
                    </div>

    action对应的控制器执行生成操作:

        public function createlistAction(){
            $url="http://".$_SERVER['HTTP_HOST'];
    //        .url('/test/index/index');
            $cate=input('param.cate');
            $id=input('param.id',0);
            if($cate==0){
                $catesql=Db::name('ArticleCate')->column('id');
                $cateid=implode(',',$catesql);
            }else{
                $cateid=Db::name('ArticleCate')->where('id',$cate)->value('id');
            }
            $count=Db::name('Article')->count();
            $map['cate_id']=array('in',$cateid);
            $map['id']=array('>',$id);
            $list=Db::name('Article')->where($map)->limit(1)->column('id');
            foreach ($list as $val){
                $fileurl=$url.url('/test/Detail/index/id/'.$val);
                $result=file_get_contents($fileurl);
                if($result){
                    $gourl=$url.url('createlistAction',['cate'=>$cate,'id'=>$val]);
                    ShowMsg("成功创建:".$val.",继续进行操作!",$gourl,0,2000);
                }
            }
        }

     其中 上面方法中用到的ShowMsg方法  复制的dedecms的

    /**
     *  短消息函数,可以在某个动作处理后友好的提示信息
     *
     * @param     string  $msg      消息提示信息
     * @param     string  $gourl    跳转地址
     * @param     int     $onlymsg  仅显示信息
     * @param     int     $limittime  限制时间
     * @return    void
     */
    function ShowMsg($msg, $gourl, $onlymsg=0, $limittime=0)
    {
        if(empty($GLOBALS['cfg_plus_dir'])) $GLOBALS['cfg_plus_dir'] = '..';
    
        $htmlhead  = "<html>
    <head>
    <title>提示信息</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    ";
        $htmlhead .= "<base target='_self'/>
    <style>div{line-height:160%;}</style></head>
    <body leftmargin='0' topmargin='0' bgcolor='#FFFFFF'>"."
    <center>
    <script>
    ";
        $htmlfoot  = "</script>
    </center>
    </body>
    </html>
    ";
    
        $litime = ($limittime==0 ? 1000 : $limittime);
        $func = '';
    
        if($gourl=='-1')
        {
            if($limittime==0) $litime = 5000;
            $gourl = "javascript:history.go(-1);";
        }
    
        if($gourl=='' || $onlymsg==1)
        {
            $msg = "<script>alert("".str_replace(""","“",$msg)."");</script>";
        }
        else
        {
            //当网址为:close::objname 时, 关闭父框架的id=objname元素
            if(preg_match('/close::/',$gourl))
            {
                $tgobj = trim(preg_replace('/close::/', '', $gourl));
                $gourl = 'javascript:;';
                $func .= "window.parent.document.getElementById('{$tgobj}').style.display='none';
    ";
            }
    
            $func .= "      var pgo=0;
          function JumpUrl(){
            if(pgo==0){ location='$gourl'; pgo=1; }
          }
    ";
            $rmsg = $func;
            $rmsg .= "document.write("<br /><div style='450px;padding:0px;border:1px solid #DADADA;'>";
            $rmsg .= "<div style='padding:6px;font-size:12px;border-bottom:1px solid #DADADA;background:#DBEEBD';'><b>提示信息!</b></div>");
    ";
            $rmsg .= "document.write("<div style='height:130px;font-size:10pt;background:#ffffff'><br />");
    ";
            $rmsg .= "document.write("".str_replace(""","“",$msg)."");
    ";
            $rmsg .= "document.write("";
    
            if($onlymsg==0)
            {
                if( $gourl != 'javascript:;' && $gourl != '')
                {
                    $rmsg .= "<br /><a href='{$gourl}'>如果你的浏览器没反应,请点击这里...</a>";
                    $rmsg .= "<br/></div>");
    ";
                    $rmsg .= "setTimeout('JumpUrl()',$litime);";
                }
                else
                {
                    $rmsg .= "<br/></div>");
    ";
                }
            }
            else
            {
                $rmsg .= "<br/><br/></div>");
    ";
            }
            $msg  = $htmlhead.$rmsg.$htmlfoot;
        }
        echo $msg;
    }

    第三补:点击生成

  • 相关阅读:
    用.NET Compact Framework创建图像按钮
    .netCF中后台多线程与UI界面交互的冻结问题
    参考网站
    PPC全屏(C#)(转)
    推荐一个.net cf的开源网站
    在Windows Mobile中应用智能设备框架(Smart Device Framework)
    使用飞信框架(Remotesoft DOTNET Linker)使.net程序脱离.net框架运行
    .NET CF 能不能快一点?
    jquery中文指导:15天学会jquery]]
    .NET CF开发的源代码级优化器(C#)(Alpha)
  • 原文地址:https://www.cnblogs.com/houdj/p/8693630.html
Copyright © 2020-2023  润新知