PHPCMS V9实现文章定时发布

发布时间:2021-01-16编辑:脚本学堂
对于做站的朋友来讲,有时会希望可以定时发布一些文章呢?本文介绍的方法,希望可以帮到大家。

对于做站的朋友来讲,有时会希望可以定时发布一些文章呢?
本文介绍的方法,希望可以帮到大家。

首先把栏目的工作流设置成“一级审核”,然后,在phpcms/modules/content/ 文件夹里新建一个文件命名:MY_index.php,这样不影响phpcms v9升级。
内容如下:
 

复制代码 代码如下:
    <?php
    defined('IN_PHPCMS') or exit('No permission resources.');
    //模型缓存路径
    class MY_index extends index {
            private $db;
            function __construct() {
                    $this->db = pc_base::load_model('content_model');
                    parent::__construct();
                    $this->dingshi();
            }
            //定时发布
            public function dingshi() {
                    $this->content_check_db = pc_base::load_model('content_check_model');
                    $ids = $this->content_check_db->select('status=1 and username="admin" and inputtime<='.SYS_TIME,'checkid');
                    foreach($ids as $k)
                    {
                            $k1 = explode('-',$k['checkid']);
                            $this->db->set_model($k1[2]);
                            $this->db->status($k1[1]);
                    }
            }
    }
    ?>


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

让文章更新的均匀些,据说这样对SEO有帮助。下面是一个用手机上网,控制发布的小功能。
1、添加一个方法:yaokong(),添加后文件内容如下:
 

复制代码 代码如下:
    <?php
    class MY_index extends index {
            private $db;
            function __construct() {
                    $this->db = pc_base::load_model('content_model');
                    parent::__construct();
                    $this->dingshi();
            }
            //定时发布
            public function dingshi() {
                    $this->content_check_db = pc_base::load_model('content_check_model');
                    $ids = $this->content_check_db->select('status=1 and inputtime<='.SYS_TIME,'checkid');
                    foreach($ids as $k)
                    {
                            $k1 = explode('-',$k['checkid']);
                            $this->db->set_model($k1[2]);
                            $this->db->status($k1[1]);
                    }
            }
            //遥控发布
            public function yaokong() {
                    session_start();
                    if($key=$_GET['key'])
                    {
                            if($key!='yourkey'){
                                    $_SESSION['admin_ro'] = 0;
                                    exit('KEY error');
                            }
                            $_SESSION['admin_ro'] = 1;
                            unset($session_storage);
                    }elseif(!$_SESSION['admin_ro']) {
                            header("HTTP/1.0 404 Not Found");exit;
                    }
                    if($_GET['id'] && $_GET['model']){
                            $id = intval($_GET['id']);
                            $model = intval($_GET['model']);
                            $this->db->set_model($model);
                            $this->db->status($id);
                            header('Location: '.APP_PATH.'index.php?m=content&c=index&a=yaokong');
                    }
                    $this->content_check_db = pc_base::load_model('content_check_model');
                    $ids = $this->content_check_db->select('status=1');
                    if(empty($ids)){
                            $_SESSION['admin_ro'] = 0;
                            exit('none');
                    }
                    foreach($ids as $i=>$k)
                    {
                            $k1 = explode('-',$k['checkid']);
                            $ids[$i]['id'] = $k1[1];
                            $ids[$i]['model'] = $k1[2];
                    }
                    $CATEGORYS = getcache('category_content_1','commons');
                    include template('content','check');
            }
    }
    ?>

2、phpcms/templates/(你的模板文件夹)/content 文件夹添加新文件 check.html,内容很简单
 

复制代码 代码如下:
 <ul>{loop $ids $id}
 <li>{$CATEGORYS[$id['catid']]['catname']} + {$id[title]} + {$id[username]} + {date('m/d H:i',$id['inputtime'])} + <a href="{APP_PATH}index.php?m=content&c=index&a=yaokong&id= {$id['id']}&model={$id['model']}">发布</a></li>{/loop}</ul>


用手机访问:你的域名/index.php?m=content&c=index&a=yaokong&key=yourkey('yourkey'和上面代码中的yourkey一致,自行修改)
访问这个地址就能触发定时文章发布,也可手动发布尚未到时的发布列表里的文章。
呵呵,不错吧,还不赶紧动手去试试。