Создание Google Sitemap из базы данных - PullRequest
2 голосов
/ 18 марта 2012

Я пытаюсь создать карту сайта для Google из информации, предоставленной из моей базы данных, все работает, кроме случаев, когда я пытаюсь использовать image: image и image: loc Я получаю эту ошибку в моем xml-файле:

Эта страница содержит следующие ошибки:

ошибка в строке 8 в столбце 17: Изображение префикса пространства имен на изображении не является определен

Ниже приведено отображение страницы до первой ошибки.

Мой код:

//create the xml document
$xmlDoc = new DOMDocument('1.0');

//create the root element
$root = $xmlDoc->appendChild(
          $xmlDoc->createElement('urlset'));
$root->appendChild(
    $xmlDoc->createAttribute("xmlns"))->appendChild(
      $xmlDoc->createTextNode('http://www.sitemaps.org/schemas/sitemap/0.9'));       

foreach($r as $spirit){

$urlSpirit = 'http://urlroot.com' . $spirit['Category'] . '/' .  $spirit['subcategory'] . '/' . $spirit['permName'];
$imgSpirit = 'http://urlroot.com' . $spirit['picture'];
  //create a url element
  $urlTag = $root->appendChild(
              $xmlDoc->createElement("url"));

  //create the loc element
  $urlTag->appendChild(
    $xmlDoc->createElement("loc", $urlSpirit));

  //create the changefreq element
  $urlTag->appendChild(
    $xmlDoc->createElement("changefreq", 'weekly'));

  //create the priority element
  $urlTag->appendChild(
    $xmlDoc->createElement("priority", '1.0'));

  //create the lastmod element
  $urlTag->appendChild(
    $xmlDoc->createElement("lastmod", $spirit['lastReview']));


  //create the img element
  $imgTag = $urlTag->appendChild(
              $xmlDoc->createElement('image:image'));

   $imgTag->appendChild(
      $xmlDoc->createElement("image:loc", $imgSpirit));
}

header("Content-Type: text/plain");

//make the output pretty
$xmlDoc->formatOutput = true;

$xmlDoc->save('test.xml');

Есть идеи?

1 Ответ

6 голосов
/ 08 августа 2012

Вы пропустили пространство имен изображения, поэтому вам нужно добавить это:

$root->appendChild(
    $xmlDoc->createAttribute("xmlns:image"))->appendChild(
        $xmlDoc->createTextNode('http://www.google.com/schemas/sitemap-image/1.1'));

Как уже упоминалось, вы можете увидеть это в документации Google по изображениям .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...