initbiz/sitemap

构建站点地图生成器的基本对象集

1.0.4 2024-08-06 17:05 UTC

This package is auto-updated.

Last update: 2024-09-06 17:16:29 UTC


README

PHP 库,用于构建面向对象的站点地图生成器。

该包仍在开发中,因此欢迎PR。

您必须编写自己的生成器(建议使用 AbstractGenerator 作为基础),并且它必须返回一个包含要包含到XML中的DOM元素的数组。

您还可以使用 BasicGenerator,但它功能有限,主要用于测试目的。

使用示例

以下是一些使用此库的示例。

包含URL的典型站点地图

    $url1 = new UrlDOMElement();
    $url1->setLoc('https://www.example.com/foo.html');
    $url1->setLastmod('2022-06-04');
    $url1->setPriority('1.0');
    $url1->setChangefreq('always');

    $url2 = new UrlDOMElement();
    $url2->setLoc('https://www.example.com/foo2.html');
    $url2->setLastmod('2022-06-04');
    $url2->setPriority('0.9');

    $urlSetDOMElement = new UrlsetDOMElement();
    $urlSetDOMElement->setUrls([$url1, $url2]);

    $DOMElements = [$urlSetDOMElement];
    $generator = new BasicGenerator();
    $generator->setDOMElements($DOMElements);

    $xml = $generator->generate();
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
  <url>
    <loc>https://www.example.com/foo.html</loc>
    <lastmod>2022-06-04T00:00:00+00:00</lastmod>
    <changefreq>always</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://www.example.com/foo2.html</loc>
    <lastmod>2022-06-04T00:00:00+00:00</lastmod>
    <priority>0.9</priority>
  </url>
</urlset>

图片站点地图

以下代码将生成以下XML

    $url1 = new UrlDOMElement();
    $url1->setloc('https://example.com/sample1.html');

    $image = new ImageDOMElement();
    $image->setLoc('https://example.com/image.jpg');
    $photo = new ImageDOMElement();
    $photo->setLoc('https://example.com/photo.jpg');
    $url1->setImages([$image, $photo]);

    $url2 = new UrlDOMElement();
    $url2->setloc('https://example.com/sample2.html');
    $picture = new ImageDOMElement();
    $picture->setLoc('https://example.com/picture.jpg');
    $url2->setImages([$picture]);

    $urlSetDOMElement = new UrlsetDOMElement();
    $urlSetDOMElement->setUrls([$url1, $url2]);

    $DOMElements = [$urlSetDOMElement];
    $generator = new BasicGenerator();
    $generator->setDOMElements($DOMElements);
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
    xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
  <url>
    <loc>https://example.com/sample1.html</loc>
    <image:image>
      <image:loc>https://example.com/image.jpg</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://example.com/photo.jpg</image:loc>
    </image:image>
  </url>
  <url>
    <loc>https://example.com/sample2.html</loc>
    <image:image>
      <image:loc>https://example.com/picture.jpg</image:loc>
    </image:image>
  </url>
</urlset>

站点地图索引

    $sitemap1 = new SitemapDOMElement();
    $sitemap1->setLoc('https://www.example.com/sitemap1.xml.gz');

    $sitemap2 = new SitemapDOMElement();
    $sitemap2->setLoc('https://www.example.com/sitemap2.xml.gz');

    $sitemapIndexDOMElement = new SitemapIndexDOMElement();
    $sitemapIndexDOMElement->setSitemaps([$sitemap1, $sitemap2]);

    $DOMElements = [$sitemapIndexDOMElement];
    $generator = new BasicGenerator();
    $generator->setDOMElements($DOMElements);

    $xml = $generator->generate();
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://www.example.com/sitemap1.xml.gz</loc>
  </sitemap>
  <sitemap>
    <loc>https://www.example.com/sitemap2.xml.gz</loc>
  </sitemap>
</sitemapindex>