早睡早起,方能养生
Sleep early rise early, way to keep healthy

PHP自动生成标准的sitemap文件

super
2022-02-14 09:30
views 1572

    function updateSiteMap() {
        $str = '<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
        // 这里先把网站的几大核心主页面 写到最前面
        $array = [
            [
                'url' => 'https://' . $_SERVER['HTTP_HOST'] . '/index.html',
                'lastmod' => date('Y-m-d'),
                'changefreq' => 'daily',
                'priority' => '1.0'
            ],
            [
                'url' => 'https://' . $_SERVER['HTTP_HOST'] . '/news.html',
                'lastmod' => date('Y-m-d'),
                'changefreq' => 'daily',
                'priority' => '1.0'
            ],
            [
                'url' => 'https://' . $_SERVER['HTTP_HOST'] . '/cases.html',
                'lastmod' => date('Y-m-d'),
                'changefreq' => 'daily',
                'priority' => '1.0'
            ],
            [
                'url' => 'https://' . $_SERVER['HTTP_HOST'] . '/about.html',
                'lastmod' => date('Y-m-d'),
                'changefreq' => 'daily',
                'priority' => '1.0'
            ]
        ];
        
        foreach ($array as $k => $v) {
            $str .= arr_to_xml($v);
        }

        // 查询所有文章
        $list = Db::name('article')->select();
        if ($list) {

            foreach ($list as $k => $v) {
                $array = [
                    'loc' => 'https://' . $_SERVER['HTTP_HOST'] . '/article/' . $v['id'] . '.html', // 这里根据路由灵活变动
                    'lastmod' => $v['update_time'] ? date('Y-m-d', $v['update_time']) : date('Y-m-d', $v['time']), // 当前文章最后修改时间,也可使用date('Y-m-d')
                    'changefreq' => 'daily', // 此页面的更新频率,灵活变动
                    'priority' => '1.0' // 页面权重,灵活变动
                ];
                
                $str .= arr_to_xml($array);
            }
            
            $str .= '
</urlset>';
            
            if ($str != null) {
                // 将生成好的字符串写入根目录下的sitemap.xml文件
                file_put_contents('./sitemap.xml', $str);
            }
            
        }
    }

    function arr_to_xml($data, $url = true) {
        $str = "";
        if ($url) {
            $str .= "
    <url>
";
        }
        foreach ($data as $key => $val) {
            if (is_array($val)) {
                $child = arr_to_xml($val, false);
                $str .= "        <$key>$child</$key>";
            } else {
                $str .= "        <$key>$val</$key>
";
            }
        }
        if ($url) {
            $str .= "    </url>";
        }
        return $str;
    }

 

请按照以上代码生成,注意缩进不要乱,还有代码前面的空格及后面的换行

 

头部

 

尾部

 

文章禁止转载



分享
0 条讨论
top