kokspflanze/zfc-sitemap

Laminas 的站点地图模块,基于 zend-navigation 和 eventmanager

0.4 2021-01-06 22:36 UTC

This package is auto-updated.

Last update: 2024-08-26 15:04:35 UTC


README

系统要求

  • 需要 PHP 7.1 或更高版本;建议尽可能使用最新的 PHP 版本。
  • 必须使用 laminas-navigation

安装

Composer

此模块的安装使用 composer。有关 composer 文档,请参阅 getcomposer.org

php composer.phar require kokspflanze/zfc-sitemap
# (When asked for a version, type `dev-master`)

转到 config/application.config.php 并在模块部分添加 ZfcSitemap

使用方法

获取站点地图

您可以通过 /sitemap.xml 查看当前的站点地图

创建缓存中的站点地图(可选)

这将在 data/zfc-sitemap 中创建一个站点地图作为缓存,这意味着,如果您调用 /sitemap.xml,它将不再创建新的站点地图,而是使用缓存的站点地图。

为此,您需要安装 laminas/laminas-mvc-console 并为此目录 data/zfc-sitemap 提供写入权限。

然后,您可以执行 php public/index.php generate-sitemap http://example.com 来创建您的站点地图。PS:您必须重新运行它以创建新的站点地图。

更改您的站点地图

如果您页面上有动态页面并且您想将它们添加到站点地图中。您可以使用 EventManager 来添加它们。

创建监听器

创建一个新的类

<?php

namespace App\Core\Listener;

use Laminas\EventManager;
use Laminas\Navigation\AbstractContainer;
use ZfcSitemap\Service\Sitemap;

class SitemapCustom extends EventManager\AbstractListenerAggregate
{
    /**
     * @inheritDoc
     */
    public function attach(EventManager\EventManagerInterface $events, $priority = 1)
    {
        $this->listeners[] = $events->attach(Sitemap::EVENT_SITEMAP, [$this, 'onSiteMap'], $priority);
    }

    /**
     * @param EventManager\EventInterface $event
     */
    public function onSiteMap(EventManager\EventInterface $event)
    {
        /** @var AbstractContainer $container */
        $container = $event->getParam('container');

        $container->addPage([
            'label' => 'Example',
            'uri' => '/example',
        ]);
        /**
        *  your custom stuff, add or remove pages
         */

        $event->setParam('container', $container);
    }

}

然后,您必须在 service_manager 配置和以下配置中添加您的监听器。

    'zfc-sitemap' => [
        'strategies' => [
            Listener\SitemapCustom::class,
        ],
    ],