kokspflanze / zfc-sitemap
Sitemap module for Laminas, based on zend-navigation with eventmanager
Installs: 1 146
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 3
Forks: 0
Open Issues: 0
Requires
- php: ^7.1.0
- ext-json: *
- laminas/laminas-eventmanager: ^3.2.1
- laminas/laminas-http: ^2.14.2
- laminas/laminas-mvc: ^3.2.0
- laminas/laminas-navigation: ^2.10.0
- laminas/laminas-router: ^3.4.4
- laminas/laminas-servicemanager: ^3.5.1
- laminas/laminas-stdlib: ^3.3.1
- laminas/laminas-view: ^2.12.0
Requires (Dev)
This package is auto-updated.
Last update: 2024-10-26 15:18:54 UTC
README
SYSTEM REQUIREMENTS
- requires PHP 7.1 or later; we recommend using the latest PHP version whenever possible.
- you have to use
laminas-navigation
INSTALLATION
Composer
Installation of this module uses composer. For composer documentation, please refer to getcomposer.org.
php composer.phar require kokspflanze/zfc-sitemap
# (When asked for a version, type `dev-master`)
Go to config/application.config.php
and add ZfcSitemap
in the modules section.
How to use
Get the sitemap
you can see your current sitemap with /sitemap.xml
Create a sitemap as cache (optional)
This create a sitemap in data/zfc-sitemap
as cache, this means, if you call /sitemap.xml
it will not longer create a new sitemap, it will use the cached sitemap.
For this you need to install laminas/laminas-mvc-console
and this directory data/zfc-sitemap
with write rights.
Than you can execute php public/index.php generate-sitemap http://example.com
to create your sitemap.
PS: You have to rerun it to create a new sitemap.
Change your sitemap
If you have dynamic pages on your page and you want to add them in the sitemap. You can add them with the EventManager.
Create a listener
create a new class
<?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); } }
Than you have to add your listener in the service_manager
config and in the following configuration.
'zfc-sitemap' => [ 'strategies' => [ Listener\SitemapCustom::class, ], ],