LECMS 插件(百度地图 sitemap 插件 pro版本)【扩展增加生成xml】 V3版本 3.0.3

隔壁老卢 1月前 242

原插件地址https://www.lecms.cc/?thread-463.htm

需购买上方插件。

刚刚一个朋友跟我聊,想把这个插件改成同时生成sitemap.xml

改良部分

原插件只支持生成静态txt文件,sitemap是动态的且一个,我在原有的txt生成文件的基础上更改了一下代码,原有功能不动的基础上可以同时生成txt和sitemap.xml

找到插件目录下的views_control_after.php文件

搜素:

if($method){

搜索以上代码将此段代码以及后半部分替换成改良代码:

    if($method){    //部分
        $files = glob($txt_dir.'/*.txt');
        $txtfile_count = count($files);

        if($txtfile_count > $maxpage){
            exit('全部生成完毕,无需生成!');
        }else{
            $page < $txtfile_count && $page = $txtfile_count;
            $txt_filename = $page.'.txt';
            $xml_filename = $page.'.xml';
            $list_arr = $this->cms_content->list_arr(array(), 'id', 1, ($page-1)*$pagenum, $pagenum, $total);
            // var_dump($list_arr);
            // die;
        }
    }else{  //全部
        $txt_filename = $page.'.txt';
        $xml_filename = $page.'.xml';
        $list_arr = $this->cms_content->list_arr(array(), 'id', 1, ($page-1)*$pagenum, $pagenum, $total);
        // var_dump($list_arr);
        //     die;
    }
    $xml1= <<<EOD
<?xml version="1.0" encoding="utf-8"?>
    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    
EOD;
    $xml2= <<<EOD
</urlset>
    
EOD;
    
    if(empty($list_arr)){
        exit('全部生成完毕!');
    }
    $urls = '';
    $urlsxmls='';
    foreach ($list_arr as $v){
        $urls .= $this->cms_content->content_url($v) . PHP_EOL;//组装txt
        $dateline=$v["dateline"];//时间
        $datexin = date('Y-m-d', $dateline);
        $urlsxml = $this->cms_content->content_url($v);//url
        $xmlContent = <<<EOD
    <url>
        <loc>{urls}</loc>
        <lastmod>{shijian}</lastmod>
        <changefreq>daily</changefreq>
        <priority>1.0</priority>
    </url>

EOD;
            $newString = str_replace('{urls}', $urlsxml, $xmlContent);
            $newString = str_replace('{shijian}', $datexin, $newString);
            $urlsxmls .= $newString;
    }
    
    $txt_filepath = $txt_dir.'/'.$txt_filename;
    $xml_filepath = $txt_dir.'/'.$xml_filename;
    FW($txt_filepath, $urls);
    FW($xml_filepath, $xml1.$urlsxmls.$xml2);

    echo $txt_filename.'创建成功!<br>耗时:';
    echo number_format(microtime(1) - $start_time, 2).'秒!<br>';

    if($page == $maxpage){
        exit('全部生成完毕!');
    }

    $jumpurl = "{$cfg['weburl']}index.php?views-sitemaps_txt-mid-{$mid}-method-{$method}-page-".++$page;
    echo '<script>setTimeout(function(){ window.location.href = "'.$jumpurl.'"; }, 500);</script>';
    exit();
}

 

 

最新回复 (4)
  • liudehua 1月前
    引用 2

    厉害了我的老弟

  • 隔壁老卢 1月前
    引用 3

    其次需要注意的是
    <changefreq>daily</changefreq>
            <priority>1.0</priority>
    部分可以自己更改,daily是天级别,1.0好像是权重

  • Mada 1月前
    引用 4
    他这个要是能修改成前面已经生成了,后面不会继续生成前面已经生成过的xml、txt 那就更好了,不然几千万数据每次都要重新生产,太麻烦了。
  • 隔壁老卢 1月前
    引用 5
    Mada 他这个要是能修改成前面已经生成了,后面不会继续生成前面已经生成过的xml、txt 那就更好了,不然几千万数据每次都要重新生产,太麻烦了。
    默认是可以前面生成了,后面无需生成。。。。。。。里面有俩选项,不选全部即可。
返回
发新帖