コード例 #1
0
 /**
  * @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();
 }
コード例 #2
0
<?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>";