cyberomulus/sitemap-generator

SiteMapGenerator 是一个PHP库,可以轻松生成网站地图和网站地图索引(包括Google特定标签)。

2.0.1 2020-03-25 22:35 UTC

This package is auto-updated.

Last update: 2024-09-26 08:17:59 UTC


README

什么是 SiteMapGenerator ?

SiteMapGenerator 是一个PHP库,可以轻松生成网站地图和网站地图索引(包括Google特定标签)。

如何安装 SiteMapGenerator

安装 SiteMapGenerator 有两种方法。

如果您使用 Composer,SiteMapGenerator 可通过 Packagist 获取。
只需将依赖项添加到您的 composer.json 文件中。

{
	"require": {
        "cyberomulus/sitemap-generator": "~2.0"
    }
}

否则,转到 SiteMapGenerator 的 GitHub 页面 并选择您想要的版本。
您可以通过“下载 ZIP”链接下载源代码。
将 ZIP 文件中的目录放置在您的项目的一个 lib 文件夹(例如)中。

使用 SiteMapGenerator 需要什么

它需要至少 PHP 版本 5.2.0 并启用 XMLWriter 扩展(默认启用)。

如何生成 SiteMapIndex

  1. 创建一个或多个 SiteMapEntry
  2. 创建一个 SiteMapIndex
  3. 将所有 SiteMapEntry 添加到 SiteMapIndex
  4. 创建一个格式化器(例如:XMLFormatter
  5. 使用 Formatter::formatSiteMapIndex()

如何生成 SiteMap

  1. 创建一个或多个 URLEntry
  2. 创建一个 SiteMap
  3. 将所有 URLEntry 添加到 SiteMap
  4. 创建一个格式化器(例如:XMLFormatter
  5. 使用 Formatter::formatSiteMap()

如何为 Google 的额外添加图片

  1. 创建一个或多个 GoogleImageEntry
  2. 将所有 GoogleImageEntry 添加到 URLEntry

如何不激活 Google 的额外

只需在 SiteMap 构造函数中将参数设置为 false。所有 GoogleImageEntry 都不会显示

如何创建格式化器

创建一个扩展 Formatter 的类。

生成包含 Google 的额外信息的 SiteMap 的示例

<?php
require 'lib/SiteMapGenerator/src/SiteMap.php';
require 'lib/SiteMapGenerator/src/entries/SiteMapEntry.php';
require 'lib/SiteMapGenerator/src/entries/URLEntry.php';
require 'lib/SiteMapGenerator/src/entries/GoogleImageEntry.php';
require 'lib/SiteMapGenerator/src/formatter/Formatter.php';
require 'lib/SiteMapGenerator/src/formatter/XMLFormatter.php';

use Cyberomulus\SiteMapGenerator\SiteMap;
use Cyberomulus\SiteMapGenerator\Entries\URLEntry;
use Cyberomulus\SiteMapGenerator\Entries\GoogleImageEntry;
use Cyberomulus\SiteMapGenerator\Formatter\XMLFormatter;

// create a sitemap
$sitemap = new SiteMap(true);

// create url
$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);

// create a image for Google's extra
$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");

// add image in url
$url1->addGoogleImageEntry($image1);
$url1->addGoogleImageEntry($image2);

// add url in sitemap
$sitemap->addUrlEntry($url1);
$sitemap->addUrlEntry($url2);
$sitemap->addUrlEntry($url3);

// create formatter
$formatter = new XMLFormatter();

// output sitemap
echo "<pre>" . $formatter->formatSiteMap($sitemap) . "</pre>";

结果

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
 <url>
  <loc>http://www.test.com/ok.php</loc>
  <lastmod>2015-05-17T15:04:38+02:00</lastmod>
  <changefreq>daily</changefreq>
  <priority>0.5</priority>
  <image:image>
   <image:loc>http://www.test.com/image/img1.jpg</image:loc>
   <image:title>a title for image</image:title>
   <image:caption>a caption for image</image:caption>
   <image:geo_location>Brussels, Belgium</image:geo_location>
   <image:license>http://www.test.com/image/license.txt</image:license>
  </image:image>
  <image:image>
   <image:loc>http://www.test.com/image/img1.jpg</image:loc>
   <image:title>a another title for image</image:title>
   <image:caption>a another caption for image</image:caption>
   <image:license>http://www.test.com/image/license.txt</image:license>
  </image:image>
 </url>
 <url>
  <loc>http://www.test.com/nice.php</loc>
  <lastmod>2015-05-17T15:04:38+02:00</lastmod>
  <changefreq>never</changefreq>
 </url>
 <url>
  <loc>http://www.test.com/nice.php?test=ok&amp;amp;restet=super</loc>
  <lastmod>2015-05-17T15:04:38+02:00</lastmod>
  <changefreq>never</changefreq>
 </url>
</urlset>

生成 SiteMapIndex 的示例

<?php
require 'lib/SiteMapGenerator/src/SiteMapIndex.php';
require 'lib/SiteMapGenerator/src/entries/SiteMapEntry.php';
require 'lib/SiteMapGenerator/src/formatter/Formatter.php';
require 'lib/SiteMapGenerator/src/formatter/XMLFormatter.php';

use Cyberomulus\SiteMapGenerator\SiteMapIndex;
use Cyberomulus\SiteMapGenerator\Entries\SiteMapLEntry;
use Cyberomulus\SiteMapGenerator\Formatter\XMLFormatter;

// create sitemapindex
$sitemapindex = new SiteMapIndex();

// create sitemap entries
$sitemap1 = new SiteMapLEntry("http://www.test.com/sitemap1.xml", new DateTime());
$sitemap2 = new SiteMapLEntry("http://www.test.com/sitemap1.xml", new DateTime());
$sitemap3 = new SiteMapLEntry("http://www.test.com/sitemap.php?code=3&restet=super", new DateTime());

// add sitemap entries in sitemapindex
$sitemapindex->addSiteMapEntry($sitemap1);
$sitemapindex->addSiteMapEntry($sitemap2);
$sitemapindex->addSiteMapEntry($sitemap3);

// create formatter
$formatter = new XMLFormatter();

// output sitemapindex
echo "<pre>" . $formatter->formatSiteMapIndex($sitemapindex) . "</pre>";

结果

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
 <sitemap>
  <loc>http://www.test.com/sitemap1.xml</loc>
  <lastmod>2015-05-17T15:07:40+02:00</lastmod>
 </sitemap>
 <sitemap>
  <loc>http://www.test.com/sitemap1.xml</loc>
  <lastmod>2015-05-17T15:07:40+02:00</lastmod>
 </sitemap>
 <sitemap>
  <loc>http://www.test.com/sitemap.php?code=3&amp;amp;restet=super</loc>
  <lastmod>2015-05-17T15:07:40+02:00</lastmod>
 </sitemap>
</sitemapindex>

SiteMapGenerator 的许可证是什么

SiteMapGenerator 在 MIT 许可证下(免费许可证)。
您可以在 LICENSE 文件中找到许可证文本。