正式开通

PHPCMS V9 定时发布内容的实现方法
2018-04-05 17:55:00   来源:原创整合   评论:0 点击:

原理使文章处于审核状态,只要到了设定的时间,一旦有用户访问有触发代码的页面,则自动通过审核,时间不到则不会通过审核。用户访问最多的
原理

使文章处于审核状态,只要到了设定的时间,一旦有用户访问有触发代码的页面,则自动通过审核,时间不到则不会通过审核。

用户访问最多的一般是文章内页,所以通常我们会把这个触发代码加入统计文章浏览次数的文件中去。

方法1:

修改栏目工作流为 一级审核,这时在发布内容时会有一个审核的选项,我们在发布文章时要把状态选择为 审核。

然后就是触发文件中写入代码,打开/api/count.php 定位到文件最后 的 ?>之前,分为以下两种情况插入代码

动态页面插入以下代码即可

//add 定时发布审核功能
$modelid = $modelid ? $modelid : intval($_GET["modelid"]);
$content_db = $content_db ? $content_db : pc_base::load_model("content_model");
$content_db->set_model($modelid);
$where = " status = 1 and inputtime count($where);
if( !empty($r) ){ //执行update操作
$content_db->update( array("status"=>99),$where );
}

如果要支持生成静态HTML文件的话,就不要用上面的代码了。下面是来自PHPCMS官方论坛的代码,动态,静态都可以完美执行。

支持静态或动态的定时代码
 

 
  1. //add 定时发布审核功能
    $urlobj = pc_base::load_app_class("url", "content");
    $html = pc_base::load_app_class("html", "content");
    $modelid = $modelid ? $modelid : intval($_GET["modelid"]);
    $content_db = $content_db ? $content_db : pc_base::load_model("content_model");
    $content_db->set_model($modelid);
    $where = " status = 1 and inputtime count($where);
    if( !empty($r) ){ //执行update操作
    $ids = $content_db->select($where, "id,catid", $r, "", "", "id");
    foreach($ids AS $kid=>$v){
    $catid = $v["catid"];
    $id = $kid;
    $r = $content_db->get_content($catid,$id);
    $urls = $urlobj->show($id, 0, $catid, $r["inputtime"], $r["prefix"],$r,"add");
    if($urls["content_ishtml"]) $html->show($urls[1],$urls["data"],0);
    $html->index();
    $html->create_relation_html($catid);
    }
    $content_db->update( array("status"=>99),$where );
    }
  2. 复制代码
  3.  

 


要触发定时功能,必须加入统计文章浏览次数的代码,搜索引擎很少回去访问js内容,所以一般人工访问,js才能执行。
 


方法2:

本功能不适用于生成静态的网站,

首先把栏目的工作流设置成一级审核


然后,在phpcms/modules/content/ 文件夹里新建一个文件命名:MY_index.php
内容如下:

  1. defined('IN_PHPCMS') or exit('No permission resources.');
  2. //模型缓存路径
  3. class MY_index extends index {
  4.         private $db;
  5.         function __construct() {
  6.                 $this->db = pc_base::load_model('content_model');
  7.                 parent::__construct();
  8.                 $this->dingshi();
  9.         }
  10.         //定时发布
  11.         public function dingshi() {
  12.                 $this->content_check_db = pc_base::load_model('content_check_model');
  13.                 $ids = $this->content_check_db->select('status=1 and username="admin" and inputtime<='.SYS_TIME,'checkid');
  14.                 foreach($ids as $k)
  15.                 {
  16.                         $k1 = explode('-',$k['checkid']);
  17.                         $this->db->set_model($k1[2]);
  18.                         $this->db->status($k1[1]);
  19.                 }
  20.         }
  21. }
  22. ?>
复制代码

第二种方法可用,已经亲自试验,只是不自动更新首页。第一种方法不知道是不是我设置不对还是怎么着发送后自己就出去了不会进去一级审核等待到时间发送

这样,当有用户通过动态地址访问你的content模快时,如果定时到了,文章就会自动审核发布。
注意:
1、不适用于生成静态的网站。静态网站要用的话,可以把网站默认文档设置成index.php优先于index.html,这样当访问首页时也有效果。
2、设置栏目为“一级审核”,发布定时文章时,除了选择发布时间外,还要把状态设置为“审核”。
3、定时发布的文章很多时建议使用“fsockopen”伪异步处理,否则出发定时发布的会员会很卡。具体谷歌吧,我站平时就定时4、5篇,不会对用户体验造成什么影响。
4、修改username="admin"中的admin为你的管理员用户名。

相关热词搜索:内容定时发布 phpcms

上一篇:无线局域网的优劣取决于无线信号
下一篇:phpcms 无法登陆后台问题

分享到: 收藏