利用苹果CMS定时任务定时生成多页sitemap网站地图

陈暗魔 发布于 2020-11-02 最后更新于 2020-12-13


从上篇文章苹果cms生成超过30URL网站地图的方法介绍得知,各大站长平台的Sitemap文件要求并不一样。

然而,其实就算是5w地址,也是远远不够的。不过我们可以后台生成-生成选项中,选择生成多页的Sitemap文件。不过每次都要手动生成,非常的麻烦。遂尝试使用苹果cms的定时任务,每隔一段时间定时更新Sitemap文件。

直接右键复制生成选项的链接,然后在新建一个浏览器标签页中打开。再右键鼠标查看源代码。我们可以在下面看到这样一串代码:

 <hr class="layui-bg-gray">
            <div class="layui-form-item">
                <label class="layui-form-label">SiteMap:</label>
                <div class="layui-input-inline w800">
                    <div class="layui-btn-container">
                        <input type="button" value="RSS订阅文件" class="layui-btn layui-btn-primary" onclick="post('ac=rss&ac2=index');">
                        <input type="button" value="谷歌SiteMap" class="layui-btn layui-btn-primary" onclick="post('ac=rss&ac2=google');">
                        <input type="button" value="百度SiteMap" class="layui-btn layui-btn-primary" onclick="post('ac=rss&ac2=baidu');">
                        <input type="button" value="SO-SiteMap" class="layui-btn layui-btn-primary" onclick="post('ac=rss&ac2=so');">
                        <input type="button" value="搜狗SiteMap" class="layui-btn layui-btn-primary" onclick="post('ac=rss&ac2=sogou');">
                        <input type="button" value="Bing-SiteMap" class="layui-btn layui-btn-primary" onclick="post('ac=rss&ac2=bing');">
                        <input type="button" value="神马-SiteMap" class="layui-btn layui-btn-primary" onclick="post('ac=rss&ac2=sm');">
                    </div>
                </div>
                <label class="layui-form-label">生成页数:</label>
                <div class="layui-input-inline w200">
                    <input type="text" name="ps" class="layui-input" placeholder="请输入生成页数默认1页" value="1" />

很明显,ac=rss&ac2=xxxx就是定时任务所需要的附加参数了。

RSS订阅文件 ac=rss&ac2=index
谷歌SiteMap ac=rss&ac2=google
百度SiteMap ac=rss&ac2=baidu
SO-SiteMap ac=rss&ac2=so
搜狗SiteMap ac=rss&ac2=sogou
Bing-SiteMap ac=rss&ac2=bing
神马-SiteMap ac=rss&ac2=sm

后面只需要在定时任务中添加就可以了,如果你只需要生成一页。那么到这里就已经结束了。

在网站根目录/application/admin/controller/中打开Make.php文件,找到以下代码。

public function rss()
    {
        mac_echo('<style type="text/css">body{font-size:12px;color: #333333;line-height:21px;}span{font-weight:bold;color:#FF0000}</style>');

        if(!in_array($this->_param['ac2'], ['index','baidu','google','so','sogou','bing','sm'])){
            return $this->error('参数错误');
        }
        if(empty(intval($this->_param['ps']))){
            $this->_param['ps'] = 1;
        }

        $GLOBALS['aid'] = mac_get_aid('rss');
        $this->label_maccms();

        for($i=1;$i<=$this->_param['ps'];$i++){
            $par =[];
            if($i>1){
                $par['page'] = $i;
                $_REQUEST['page'] = $i;
            }
            $link = mac_url('rss/'.$this->_param['ac2'],$par);

            $this->buildHtml($link,'./','rss/'.$this->_param['ac2']);
            $this->echoLink($link,$link);
        }
        if(ENTRANCE=='admin') {
            mac_jump(url('make/opt'), 3);
        }
        exit;
    }

将$this->_param['ps'] = 1;的值改为你想生成的地图数量,这个值是全局的,改了后所有的Sitemap文件都会生成该值的数量。如我是生成5页,就改为$this->_param['ps'] = 5;

后面再去测试定时任务,就会看到生成5页的Sitemap文件了。