The NucleosSeoBundle is a fork of SonataSeoBundle which respects BC. It also provides sitemap functionality of the deprecated NucleosSitemapBundle.
Open a command console, enter your project directory and execute the following command to download the latest stable version of this library:
composer require nucleos/seo-bundle
Then, enable the bundle by adding it to the list of registered bundles in config/bundles.php
file of your project:
// config/bundles.php
return [
// ...
Nucleos\SeoBundle\NucleosSeoBundle::class => ['all' => true],
];
Create a configuration file called nucleos_seo.yaml
:
# config/routes/nucleos_seo.yaml
nucleos_seo:
resource: '@NucleosSeoBundle/Resources/config/routing/sitemap.yml'
prefix: /
If you want to use symfony cache, you should define a new cache pool (PSR 6) and create an adapter to map it to a simple cache (PSR 16):
nucleos_seo:
cache:
service: 'sitemap.cache.simple'
framework:
cache:
pools:
sitemap.cache:
adapter: cache.app
default_lifetime: 60
services:
sitemap.cache.simple:
class: 'Symfony\Component\Cache\Psr16Cache'
arguments:
- '@sitemap.cache'
You can add static entries in your yaml config:
# config/packages/nucleos_seo.yaml
nucleos_seo:
static:
- { url: 'http://example.com', priority: 75, changefreq: 'weekly' }
If you want to create a custom sitemap, the only thing you have to do is to create a service that uses
Nucleos\SeoBundle\Sitemap\SitemapServiceInterface
and tag the service with nucleos_seo.sitemap
.
<service id="App\Sitemap\CustomSitemap">
<tag name="nucleos_seo.sitemap"/>
</service>
This bundle is under the MIT license.