/** * @see Formatter::formatSiteMap() */ public function formatSiteMap(SiteMap $siteMap) { // init and configure XMLWriter $writer = new \XMLWriter(); $writer->openMemory(); $writer->setIndent(true); $writer->startDocument("1.0", "UTF-8"); // start root $writer->startElementNs(null, "urlset", "http://www.sitemaps.org/schemas/sitemap/0.9"); // add attributs for Google if ($siteMap->getActivateGoogleExtra() == true) { $writer->writeAttribute("xmlns:image", "http://www.google.com/schemas/sitemap-image/1.1"); } // add all url's entries foreach ($siteMap->getUrlEntries() as $urlEntry) { if ($urlEntry->getUrl() != null) { $writer->startElement("url"); $writer->writeElement("loc", htmlentities($urlEntry->getUrl(), null, "UTF-8", true)); if ($urlEntry->getLastModification()) { $writer->writeElement("lastmod", $urlEntry->getLastModification()->format(\DateTime::W3C)); } if ($urlEntry->getChangeFrequence()) { $writer->writeElement("changefreq", $urlEntry->getChangeFrequence()); } if ($urlEntry->getPriority()) { $writer->writeElement("priority", $urlEntry->getPriority()); } // add all Image Entry for Google if ($siteMap->getActivateGoogleExtra() == true) { foreach ($urlEntry->getGoogleImageEntries() as $GoogleImageEntry) { $writer->startElement("image:image"); $writer->writeElement("image:loc", htmlentities($GoogleImageEntry->getUrl(), null, "UTF-8", true)); if ($GoogleImageEntry->getTitle()) { $writer->writeElement("image:title", $GoogleImageEntry->getTitle()); } if ($GoogleImageEntry->getCaption()) { $writer->writeElement("image:caption", $GoogleImageEntry->getCaption()); } if ($GoogleImageEntry->getGeo()) { $writer->writeElement("image:geo_location", $GoogleImageEntry->getGeo()); } if ($GoogleImageEntry->getLicense()) { $writer->writeElement("image:license", htmlentities($GoogleImageEntry->getLicense(), null, "UTF-8", true)); } $writer->endElement(); } } $writer->endElement(); } } // close root $writer->endElement(); return $writer->flush(); }
<?php require '../src/SiteMap.php'; require '../src/entries/SiteMapEntry.php'; require '../src/entries/URLEntry.php'; require '../src/entries/GoogleImageEntry.php'; require '../src/formatter/Formatter.php'; require '../src/formatter/XMLFormatter.php'; use Cyberomulus\SiteMapGenerator\SiteMap; use Cyberomulus\SiteMapGenerator\Entries\URLEntry; use Cyberomulus\SiteMapGenerator\Entries\GoogleImageEntry; use Cyberomulus\SiteMapGenerator\Formatter\XMLFormatter; $sitemap = new SiteMap(true); $url1 = new URLEntry("http://www.test.com/ok.php", new DateTime(), URLEntry::CHANGE_FEQUENCE_DAILY, "0.5"); $url2 = new URLEntry("http://www.test.com/nice.php", new DateTime(), URLEntry::CHANGE_FEQUENCE_NEVER); $url3 = new URLEntry("http://www.test.com/nice.php?test=ok&restet=super", new DateTime(), URLEntry::CHANGE_FEQUENCE_NEVER); $image1 = new GoogleImageEntry("http://www.test.com/image/img1.jpg", "a title for image", "a caption for image", "Brussels, Belgium", "http://www.test.com/image/license.txt"); $image2 = new GoogleImageEntry("http://www.test.com/image/img1.jpg", "a another title for image", "a another caption for image", null, "http://www.test.com/image/license.txt"); $url1->addGoogleImageEntry($image1); $url1->addGoogleImageEntry($image2); $sitemap->addUrlEntry($url1); $sitemap->addUrlEntry($url2); $sitemap->addUrlEntry($url3); $formatter = new XMLFormatter(); echo "<pre>" . $formatter->formatSiteMap($sitemap) . "</pre>";