PHPCMS v9定时发布的简单实现方法[支持静态生成]

来源:互联网  时间:2017-12-18    阅读:   我要吐槽    阿里云幸运券

将以下代码放到 api/count.php 文件最后 的 ?>之前:

  1. //add 定时发布审核功能 
  2. $modelid = $modelid ? $modelid : intval($_GET['modelid']); 
  3. $content_db = $content_db ? $content_db : pc_base::load_model('content_model'); 
  4. $content_db->set_model($modelid); 
  5. $where = ' status = 1 and inputtime <= '.SYS_TIME; 
  6. $r = $content_db->count($where); 
  7. if( !emptyempty($r) ){ //执行update操作 
  8.   $content_db->update( array('status'=>99),$where ); 

这样就行了,然后记得修改文字发布需要审核才能通过,不然发出去直接就通过了,另外就是发布时间要设置为未来的时间,这样才能定时.

不是严格意义上的定时发布,当有用户访问你的内容页时,触发了内容页的:

  1. <script language="JavaScript" src="{APP_PATH}api.php?op=count&id={$id}&modelid={$modelid}"></script> 

js,就会执行上面的通过审核代码.

注意,仅适用于伪静态.生成静态的需要额外的静态化操作.可跟帖说明是否需要,需求大可以提供代码.

静态方法:

  1. //add 定时发布审核功能 
  2. $urlobj = pc_base::load_app_class('url''content');   
  3. $html = pc_base::load_app_class('html''content'); 
  4.   
  5. $modelid = $modelid ? $modelid : intval($_GET['modelid']); 
  6. $content_db = $content_db ? $content_db : pc_base::load_model('content_model'); 
  7. $content_db->set_model($modelid); 
  8. $where = ' status = 1 and inputtime <= '.SYS_TIME; 
  9. $r = $content_db->count($where); 
  10.         if( !emptyempty($r) ){ //执行update操作 
  11.         $ids = $content_db->select($where'id,catid'$r'''''id'); 
  12.         foreach($ids AS $kid=>$v){ 
  13.                 $catid = $v['catid']; 
  14.                 $id = $kid
  15.                 $r = $content_db->get_content($catid,$id); 
  16.                 $urls = $urlobj->show($id, 0, $catid$r['inputtime'], $r['prefix'],$r,'add'); 
  17.                 if($urls['content_ishtml']) $html->show($urls[1],$urls['data'],0); 
  18.                 $html->index(); 
  19.                 $html->create_relation_html($catid); 
  20.         } 
  21.         $content_db->update( array('status'=>99),$where ); 
  22.         } 

修改过的count.php文件已经提供:

  1. <?php 
  2. defined('IN_PHPCMS'or exit('No permission resources.'); 
  3. /** 
  4.  * 点击统计 
  5.  */ 
  6. $db = ''
  7. $db = pc_base::load_model('hits_model'); 
  8. if($_GET['modelid'] && $_GET['id']) { 
  9.     $model_arr = array(); 
  10.     $model_arr = getcache('model','commons'); 
  11.     $modelid = intval($_GET['modelid']); 
  12.     $hitsid = 'c-'.$modelid.'-'.intval($_GET['id']); 
  13.     $r = get_count($hitsid); 
  14.     if(!$rexit
  15.     extract($r); 
  16.     hits($hitsid); 
  17.     echo "\$('#todaydowns').html('$dayviews');"
  18.     echo "\$('#weekdowns').html('$weekviews');"
  19.     echo "\$('#monthdowns').html('$monthviews');"
  20. elseif($_GET['module'] && $_GET['id']) { 
  21.     $module = $_GET['module']; 
  22.     if((preg_match('/([^a-z0-9_\-]+)/i',$module))) exit('1'); 
  23.     $hitsid = $module.'-'.intval($_GET['id']); 
  24.     $r = get_count($hitsid); 
  25.     if(!$rexit
  26.     extract($r); 
  27.     hits($hitsid); 
  28.   
  29.   
  30. /** 
  31.  * 获取点击数量 
  32.  * @param $hitsid 
  33.  */ 
  34. function get_count($hitsid) { 
  35.     global $db
  36.     $r = $db->get_one(array('hitsid'=>$hitsid));  
  37.     if(!$rreturn false;   
  38.     return $r;  
  39.   
  40. /** 
  41.  * 点击次数统计 
  42.  * @param $contentid 
  43.  */ 
  44. function hits($hitsid) { 
  45.     global $db
  46.     $r = $db->get_one(array('hitsid'=>$hitsid)); 
  47.     if(!$rreturn false; 
  48.     $views = $r['views'] + 1; 
  49.     $yesterdayviews = (date('Ymd'$r['updatetime']) == date('Ymd'strtotime('-1 day'))) ? $r['dayviews'] : $r['yesterdayviews']; 
  50.     $dayviews = (date('Ymd'$r['updatetime']) == date('Ymd', SYS_TIME)) ? ($r['dayviews'] + 1) : 1; 
  51.     $weekviews = (date('YW'$r['updatetime']) == date('YW', SYS_TIME)) ? ($r['weekviews'] + 1) : 1; 
  52.     $monthviews = (date('Ym'$r['updatetime']) == date('Ym', SYS_TIME)) ? ($r['monthviews'] + 1) : 1; 
  53.     $sql = array('views'=>$views,'yesterdayviews'=>$yesterdayviews,'dayviews'=>$dayviews,'weekviews'=>$weekviews,'monthviews'=>$monthviews,'updatetime'=>SYS_TIME); 
  54.     return $db->update($sqlarray('hitsid'=>$hitsid)); 
  55.   
  56. //add 定时发布审核功能 
  57. $urlobj = pc_base::load_app_class('url''content');   
  58. $html = pc_base::load_app_class('html''content'); 
  59.   
  60. $modelid = $modelid ? $modelid : intval($_GET['modelid']); 
  61. $content_db = $content_db ? $content_db : pc_base::load_model('content_model'); 
  62. $content_db->set_model($modelid); 
  63. $where = ' status = 1 and inputtime <= '.SYS_TIME; 
  64. $r = $content_db->count($where); 
  65.     if( !emptyempty($r) ){ //执行update操作 
  66.     $ids = $content_db->select($where'id,catid'$r'''''id'); 
  67.     foreach($ids AS $kid=>$v){ 
  68.                 $catid = $v['catid']; 
  69.                 $id = $kid
  70.                 $r = $content_db->get_content($catid,$id); 
  71.                 $urls = $urlobj->show($id, 0, $catid$r['inputtime'], $r['prefix'],$r,'add'); 
  72.                 if($urls['content_ishtml']) $html->show($urls[1],$urls['data'],0); 
  73.                 $html->index(); 
  74.                 $html->create_relation_html($catid); 
  75.     } 
  76.   $content_db->update( array('status'=>99),$where ); 
  77.   
  78. ?> 
  79. $('#hits').html('<?php echo $views?>'); 

注意:生成静态的网站请看14楼代码或者上面的附件, 需要访问了待定时发布的文章所在模型的任意一篇可正常浏览的文章即可,主要是为了触发上面的js,搜索引擎访问的无效,必须是人为访问,js能得以执行.

Tags:PHPCMS  定时发布  

参与讨论