百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程文章 > 正文

php手把手教你做网站(三十六)网站静态生成全站

qiyuwang 2024-10-15 14:49 9 浏览 0 评论

说明:

  1. 详情页name使用数组credetail[],产品value:1,新闻value:2,这样我们在生成页面获得的credetail,循环可以得到要生成的哪个模块的详情;
  2. 应该是生成几条新闻,然后使用header('refresh:2;url=’)刷新页面,这里我使用的是间隔2秒,不间隔会出现卡死的情况;
  3. 生成的时候采用分页读取,下一次刷新的时候页码加1,读取文章,没有了也就是当前模块的生成完成了;
  4. 一个模块生成完成以后,要在数组内把该模块参数删除;

html代码:

					    <tr>
						    <td width="90" align="right" rowspan=3>按模块生成</td>
							<td>   
							    <div class="layui-input-inline" id='chkall' >
								<input type="checkbox"  title='全选' />
								</div>
							</td>
						</tr>
						<tr>
							<td style='line-height:200%;' class='quanxian'>
                                							    公司产品 |  <input type='checkbox' value='11'  name='credetail[]' lay-skin="primary" title='详情页'>   <input type='checkbox' value='11'  name='crelist[]' lay-skin="primary"  title='分类页'>   <input type='checkbox' value='11'  name='creindex[]' lay-skin="primary" title='模块主页'><br/>	
															    新闻中心 |  <input type='checkbox' value='1'  name='credetail[]' lay-skin="primary" title='详情页'>   <input type='checkbox' value='1'  name='crelist[]' lay-skin="primary"  title='分类页'>   <input type='checkbox' value='1'  name='creindex[]' lay-skin="primary" title='模块主页'><br/>	
															    应用案例 |  <input type='checkbox' value='13'  name='credetail[]' lay-skin="primary" title='详情页'>   <input type='checkbox' value='13'  name='crelist[]' lay-skin="primary"  title='分类页'>   <input type='checkbox' value='13'  name='creindex[]' lay-skin="primary" title='模块主页'><br/>	
															    单页信息 |  <input type='checkbox' value='2'  name='credetail[]' lay-skin="primary" title='详情页'>  <br/>	
															</td>
						</tr>

					    <tr>
                            <td>
                                <input type='checkbox'  value='1'  name='cretoday' lay-skin="primary" title='今日信息'> 勾选后只生成今天修改或者填加的信息
							</td>
						</tr>
					    <tr>
						    <td width="90" align="right"></td>
							<td>
							    <input class="layui-btn crea" type="button" value="生成" cmd=0 /> <input class="layui-btn crea" cmd='1' type="button" value="断点生成" />
							</td>
						</tr>

弹窗html:

<div class='tanchuang none' >
<div class='tcclose'><i class="fa fa-times" aria-hidden="true"></i></div>
<div id="creinfo" class='none creinfoimg'></div>
<div style="display:none;"><iframe id='crehtml' height=200 border=0 width=100%  frameborder=0 style='border:1px solid #DDD;'></iframe></div>
</div>

js代码:

$(document).ready(function() {
    $(".crea").click(function(){ 
      var cmd=$(this).attr('cmd');
	  if(cmd==1){
      //断点生成
	    var cmdurl=window.localStorage.getItem('cmdurl');
      if(cmdurl){
         //弹窗,阴影背景显示
		    $(".tanchuang,.zzc").show();
		    $("#crehtml").attr("src",cmdurl);
		    return false;
      }

	  }
		var chk_value =new Array();
		chk_value['credetail']=[];
    //详情页
		$('input[name="credetail[]"]:checked').each(function(){ 
			chk_value['credetail'].push($(this).val()); 
		});
    //列表页
		chk_value['crelist']=[];
		$('input[name="crelist[]"]:checked').each(function(){ 
			chk_value['crelist'].push($(this).val()); 
		});
    //模块首页
		chk_value['creindex']=[];
		$('input[name="creindex[]"]:checked').each(function(){ 
			chk_value['creindex'].push($(this).val()); 
		});
    //是否勾选 今天修改信息
		var tdbase=$('input[name="cretoday"]').is(":checked");

		if(chk_value['credetail']==''&&chk_value['crelist']==''&&chk_value['creindex']==''){
		    uptishi('请选择要生成的模块!');
			return false;
		}
		$(".tanchuang,.zzc").show();
		//console.log(chk_value);
		//alert(chk_value['credetail']);
       
		$("#crehtml").attr("src",src+"?credetail="+chk_value['credetail']+"&crelist="+chk_value['crelist']+"&creindex="+chk_value['creindex']+"&tdbase="+tdbase);
	});

执行生成页面(html):

	  $credetail=input('credetail')??'';
		$crelist=input('crelist')??'';
		$creindex=input('creindex')??'';
		$tdbase=input('tdbase')??'';
    $p=input('p')??1;
if($credetail){
    //生成详情页
    $dtarr=explode(",",$credetail);
    if($tdbase=="true"){
				$stimedate=strtotime(date("Y-m-d",time())."   00:00:01");
				$etimedate=strtotime(date("Y-m-d",time())."   23:59:59");
        //今天修改的信息
			  $condtion=" web_time>=".$stimedate." and web_time<=".$etimedate."";
		}
    //读取$dtarr[0]信息   一次生成3条信息
    $list=Db::name('news')->page($p,3)->where($condition)->select();
    if($list){
        foreach($list as $k){
           htmlfunction();//创建静态页面
        }
        //向父级窗口赋值
      echo "	
				<script language='javascript'>
				    $(document).ready(function() {
						$('#creinfo',window.parent.document).append('生成完成!');
						$('#creinfo',window.parent.document).scrollTop($('#creinfo',window.parent.document)[0].scrollHeight);
		        })
				</script>";
      
        $p++;
        //记录断点
				$cmdurl='http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
        $cmdurl=preg_replace('/&p=(.*)/','&p='.$p,$cmdurl);

        echo "
				<script language='javascript'>
				window.localStorage.setItem('cmdurl','".$cmdurl."');
				</script>
				";
				header("refresh:2;url=".$cmdurl);
				//header('location:'.$CFG['site_urlpath'].'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].'&p='.$p);
				exit;  
    }else{
      unset($dtarr[0]);
      array_values($dtarr);
		  $credetail=implode(",",$dtarr);
        //记录断点
				$cmdurl='http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
        echo "
				<script language='javascript'>
				window.localStorage.setItem('cmdurl','".$cmdurl."');
				</script>
				";
				header("refresh:2;url=".$cmdurl);
				//header('location:'.$CFG['site_urlpath'].'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].'&p='.$p);
				exit;  
    }
    //详情页会一直创建,直到为空,跳转的时候详情参数为空了 ,
    //也就不会创建了,然后依次判断创建列表页 ,模块首页,
  if($crelist){
  }
  if($creindex){
  }
  echo   "全部执行完成!"
    
}

说明:

  1. 获取详情、列表、模块、今天的文本框是否勾选了;
  2. 生成完第一个模块,要删除掉第一个数组元素unset($dtarr[0]);,也就是我们每次生成都生成$dtarr[0],一直到全部完成;
  3. 当我们创建列表页的时候,如果页数很多,也要间隔2 3秒刷新再继续创建;

假设处理生成的url是http://127.0.0.1/html?credetail=1,3,4&crelist=22

开始生成1,3,4当1的信息生成完了,跳转url就是http://127.0.0.1/html?credetail=3,4&crelist=22,每一次都生成第一个,一直到credetail为空,然后就是生成crelist,依次生成一直到参数全部为空,则全部生成完成。

断点生成:

我们只需要存储生成完成以后要跳转的url,当我们点击断点生成按钮,读取该url的存储通过jquery赋值给iframe的src就可以实现在断点处开始生成html。

主要使用了window.localStorage.setItem('cmdurl','".$cmdurl."'),window.localStorage.getItem('cmdurl');

1)php存储断点URL:

       //记录断点
				$cmdurl='http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
				//这样获取到的url包含了p分页,需要把p的值替换成p++
        $cmdurl=preg_replace('/&p=(.*)/','&p='.$p,$cmdurl);
        echo "
				<script language='javascript'>
				window.localStorage.setItem('cmdurl','".$cmdurl."');
				</script>
				";

2)js读取断点

var cmdurl=window.localStorage.getItem('cmdurl');

jquery向父级窗口赋值:

$('#creinfo',window.parent.document).append(‘赋值信息’);

加入 ,window.parent.document 操作父级窗口

jquery append赋值,滚动条自动向上滚动:

$('#creinfo',window.parent.document).scrollTop($('#creinfo',window.parent.document)[0].scrollHeight);

header间隔几秒页面跳转

header("refresh:2;url=".$cmdurl);

相关推荐

# 安装打开 ubuntu-22.04.3-LTS 报错 解决方案

#安装打开ubuntu-22.04.3-LTS报错解决方案WslRegisterDistributionfailedwitherror:0x800701bcError:0x80070...

利用阿里云镜像在ubuntu上安装Docker

简介:...

如何将Ubuntu Kylin(优麒麟)19.10系统升级到20.04版本

UbuntuKylin系统使用一段时间后,有新的版本发布,如何将现有的UbuntuKylin系统升级到最新版本?可以通过下面的方法进行升级。1.先查看相关的UbuntuKylin系统版本情况。使...

Ubuntu 16.10内部代号确认为Yakkety Yak

在正式宣布Ubuntu16.04LTS(XenialXerus)的当天,Canonical创始人MarkShuttleworth还非常开心的在个人微博上宣布Ubuntu下个版本16.10的内...

如何在win11的wsl上装ubuntu(怎么在windows上安装ubuntu)

在Windows11的WSL(WindowsSubsystemforLinux)上安装Ubuntu非常简单。以下是详细的步骤:---...

Win11学院:如何在Windows 11上使用WSL安装Ubuntu

IT之家2月18日消息,科技媒体pureinfotech昨日(2月17日)发布博文,介绍了3中简便的方法,让你轻松在Windows11系统中,使用WindowsSubs...

如何查看Linux的IP地址(如何查看Linux的ip地址)

本头条号每天坚持更新原创干货技术文章,欢迎关注本头条号"Linux学习教程",公众号名称“Linux入门学习教程"。...

怎么看电脑系统?(怎么看电脑系统配置)

要查看电脑的操作系统信息,可以按照以下步骤操作,根据不同的操作系统选择对应的方法:一、Windows系统通过系统属性查看右键点击桌面上的“此电脑”(或“我的电脑”)图标,选择“属性”。在打开的...

如何查询 Linux 内核版本?这些命令一定要会!

Linux内核是操作系统的核心,负责管理硬件资源、调度进程、处理系统调用等关键任务。不同的内核版本可能支持不同的硬件特性、提供新的功能,或者修复了已知的安全漏洞。以下是查询内核版本的几个常见场景:...

深度剖析:Linux下查看系统版本与CPU架构

在Linux系统管理、维护以及软件部署的过程中,精准掌握系统版本和CPU架构是极为关键的基础操作。这些信息不仅有助于我们深入了解系统特性、判断软件兼容性,还能为后续的软件安装、性能优化提供重要依据。接...

504 错误代码解析与应对策略(504错误咋解决)

在互联网的使用过程中,用户偶尔会遭遇各种错误提示,其中504错误代码是较为常见的一种。504错误并非意味着网站被屏蔽,它实际上是指服务器在规定时间内未能从上游服务器获取响应,专业术语称为“Ga...

猎聘APP和官网崩了?回应:正对部分职位整改,临时域名可登录

10月12日,有网友反映猎聘网无法打开,猎聘APP无法登录。截至10月14日,仍有网友不断向猎聘官方微博下反映该情况,而猎聘官方微博未发布相关情况说明,只是在微博内对反映该情况的用户进行回复,“抱歉,...

域名解析的原理是什么?域名解析的流程是怎样的?

域名解析是网站正常运行的关键因素,因此网站管理者了解域名解析的原理和流程对于做好域名管理、解决常见解析问题,保障网站的正常运转十分必要。那么域名解析的原理是什么?域名解析的流程是怎样的?接下来,中科三...

Linux无法解析域名的解决办法(linux 不能解析域名)

如果由于误操作,删除了系统原有的dhcp相关设置就无法正常解析域名。  此时,需要手动修改配置文件:  /etc/resolv.conf  将域名解析服务器手动添加到配置文件中  该文件是DNS域名解...

域名劫持是什么?(域名劫持是什么)

域名劫持是互联网攻击的一种方式,通过攻击域名解析服务器(DNS),或伪造域名解析服务器(DNS)的方法,把目标网站域名解析到错误的地址从而实现用户无法访问目标网站的目的。说的直白些,域名劫持,就是把互...

取消回复欢迎 发表评论: