PHP& XML - 我网站的站点地图

时间:2010-12-15 20:46:00

标签: php xml sitemap

我是否可以使用任何站点地图为我的网站自动生成链接并自动每日更新搜索引擎?

我正在使用PHP&的MySQL。

1 个答案:

答案 0 :(得分:-1)

我使用简单的站点地图生成器自动执行此过程:

class SiteMap {

    public static function generate() {
        global $known_classes;
        $methodName = "siteMap";
        $result = "";
        foreach ($known_classes as $file => $path) {
            if(String::endsWith($file, "Controller.class.php")) {
                $dotPos = stripos($file, '.');
                $className = substr($file, 0, $dotPos);
                //              echo $className . '<br>';

                if(method_exists($className, $methodName)) {
                    $refl = new ReflectionMethod($className, $methodName);
                    $data = $refl->invoke(NULL); // invoke static method with no paramaters
                    //                  echo $data;
                    foreach ($data as $dataEl) {
                        $result .= self::add($dataEl);
                    }
                }
            }
        }

        $header =  '<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
        $footer = "\r\n</urlset>";

        $sitemap = $header . $result . $footer;

        return $sitemap;
    }



    private static function add($data) {
        $result = "\r\n\t<url>\r\n";
        foreach ($data as $key => $value) {
            if($key == 'loc') {
                $value = htmlspecialchars($value);
            }
            $result .= "\t\t<$key>$value</$key>\r\n";
        }
        return $result . "\t</url>";
    }
}

已知类是我用于类自动加载的全局哈希。

'AdminController.class.php' => '/pathto/websitecenter.ca/Classes/Controllers/AdminController.class.php',

我对每个控制器进行轮询并询问他们能够处理的链接。 要包含在站点地图中的每个控制器都有:

public static function siteMap() {
    $pageURL = 'http://' . $_SERVER["SERVER_NAME"];
    $data = array(
    array("loc" => $pageURL . "/services"),
    );
    return $data;
}

示例:http://websitecenter.ca/sitemap.xml