如何使用php动态更新站点地图?

时间:2013-03-02 21:59:50

标签: php xml sitemap

我有一个动态网站,其中不断生成帖子,我对其进行了编码,因此每次添加新帖子时,它都会将站点地图网址条目附加到sitemap.xml文件的底部。

        $lastID = $db->lastInsertId();
    $file = 'sitemap.xml';
    $current = file_get_contents($file);
    $current .= "<url>
    <loc>http://website.net/viewpost.php?ID=".$lastID."</loc>
    <changefreq>monthly</changefreq>
    </url>";
    file_put_contents($file, $current);

这可行,但xml文件urlset中的结束标记需要位于文件的末尾。因此,当我追加这些数据时,它会在urlset之后,即使我将其添加到字符串中,也会有多个结束标记。如何更新文件,使其不会在结束标记之后。 每次重新生成整个站点地图都会有效,但似乎很多工作,因为现在有近100页,它需要查询多个表来获取数据

1 个答案:

答案 0 :(得分:1)

这是一个简单的函数,用于在另一个元素之前,之后或之内插入元素。

<?php 

public function myInsertNode($newNode, $refNode, $insertMode=null) {

    if(!$insertMode || $insertMode == "inside") {

        $refNode->appendChild($newNode);

    } else if($insertMode == "before") {

        $refNode->parentNode->insertBefore($newNode, $refNode);

    } else if($insertMode == "after") {

        if($refNode->nextSibling) {
            $refNode->parentNode->insertBefore($newNode, $refNode->nextSibling);
        } else {
            $refNode->parentNode->appendChild($newNode);
        }      

    }

}

?>