Как создать Google Sitemap с локализованными версиями страницы, используя PHP и DOMDocument - PullRequest
1 голос
/ 03 апреля 2019

Я хочу создать Google Sitemap с использованием PHP для мультиязычного сайта.Как я могу сделать это правильно, без печати строк XML?Возможно, с использованием класса PHP DOMDocument?

Структура должна быть такой, как рекомендует Google: https://support.google.com/webmasters/answer/189077#sitemap

1 Ответ

1 голос
/ 03 апреля 2019

Это вопрос, на который у меня уже есть ответ:

$domtree = new DOMDocument("1.0", "UTF-8");
$domtree->formatOutput = true;
$urlset = $domtree->createElementNS("http://www.sitemaps.org/schemas/sitemap/0.9", "urlset");
$domtree->appendChild($urlset);
$urlset->setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:xhtml", "http://www.w3.org/1999/xhtml");

{
    //create the `url`
    $url = $domtree->createElement("url");
    //add the url
    $url_root = $urlset->appendChild($url);

    {
        //create the `loc`
        $loc = $domtree->createElement("loc", "http://www.example.com/english/page.html");
        //add the loc to the url
        $url_root->appendChild($loc);

        //create `xhtml:link`
        $xhtml_link = $domtree->createElement("xhtml:link");
        //add the `xhtml:link` to the `url`
        $url->appendChild($xhtml_link);

        {
            //create an `rel` attribute to the `xhtml:link`
            $dom_attribute = $domtree->createAttribute("rel");
            $dom_attribute->value="alternate";
            //add the attribute to the `xhtml:link`
            $xhtml_link->appendChild($dom_attribute);

            //create an `hreflang` attribute to the `xhtml:link`
            $dom_attribute = $domtree->createAttribute("hreflang");
            $dom_attribute->value="en";
            //add the attribute to the `xhtml:link`
            $xhtml_link->appendChild($dom_attribute);

            //create an `href` attribute to the `xhtml:link`
            $dom_attribute = $domtree->createAttribute("href");
            $dom_attribute->value="http://www.example.com/english/page.html";
            //add the attribute to the `xhtml:link`
            $xhtml_link->appendChild($dom_attribute);

        }
    }
}
...