valantic-spryker / sitemap
Provides sitemap
Requires
- php: >=8.1
- league/uri: ^6.7 || ^7.0
- spryker/event-behavior: ^1.23.0
- spryker/kernel: ^3.72.0
- spryker/router: ^1.14.0
Requires (Dev)
- fond-of-codeception/spryker: ^2.4.1
- spryker-sdk/phpstan-spryker: ^0.4.0
- spryker/architecture-sniffer: ^0.5.7
- spryker/code-sniffer: ^0.17.18
- spryker/development: ^3.34
- spryker/testify: *
This package is auto-updated.
Last update: 2025-01-07 07:25:44 UTC
README
Installation
- Install dependency
composer require valantic-spryker/sitemap
- Make sure that ValanticSpryker namespace is registered in
config_default.php
$config[KernelConstants::CORE_NAMESPACES] = [ 'SprykerShop', 'SprykerEco', 'Spryker', 'ValanticSpryker', ];
- Register RouterPlugin
<?php namespace Pyz\Yves\Router; use [...] class RouterDependencyProvider extends SprykerRouterDependencyProvider { [...] /** * @return \Spryker\Yves\RouterExtension\Dependency\Plugin\RouteProviderPluginInterface[] */ protected function getRouteProvider(): array { return [ [...] new SitemapControllerProvider(), ]; } }
- Register Console command
<?php declare(strict_types = 1); namespace Pyz\Zed\Console; use [...] /** * @method \Pyz\Zed\Console\ConsoleConfig getConfig() */ class ConsoleDependencyProvider extends SprykerConsoleDependencyProvider { [...] /** * @param \Spryker\Zed\Kernel\Container $container * * @return \Symfony\Component\Console\Command\Command[] */ protected function getConsoleCommands(Container $container) { $commands = [ [...] new SitemapGenerateConsole(), ]; } }
- Add cronjobs in
jenkins.php
for each store
$jobs[] = [ 'name' => 'generate-sitemap-de', 'command' => 'APPLICATION_STORE=DE $PHP_BIN vendor/bin/console sitemap:generate -vvv', 'schedule' => '0 0 1 1 *', 'enable' => false, 'run_on_non_production' => true, 'stores' => $allStores, ]; $jobs[] = [ 'name' => 'generate-sitemap-at', 'command' => 'APPLICATION_STORE=AT $PHP_BIN vendor/bin/console sitemap:generate -vvv', 'schedule' => '0 0 1 1 *', 'enable' => false, 'run_on_non_production' => true, 'stores' => $allStores, ]; // add jobs for each store
When executing sitemap command from console, make sure to use the following syntax, in order to have correct base URLs:
APPLICATION_STORE=AT docker/sdk cli console sitemap:generate -vvv
- You can optionally add sitemap url limit per one XML file in
config_default
. The default is 50000.
$config[SitemapConstants::SITEMAP_URL_LIMIT] = 50000;
-
Register connector modules to see resources such as category, product abstract urls. Information is provided in each connector module:
- https://github.com/valantic-CEC-Deutschland-GmbH/category-sitemap-connector
- https://github.com/valantic-CEC-Deutschland-GmbH/content-pages-sitemap-connector
- https://github.com/valantic-CEC-Deutschland-GmbH/product-abstract-sitemap-connector
- https://github.com/valantic-CEC-Deutschland-GmbH/product-concrete-sitemap-connector
- https://github.com/valantic-CEC-Deutschland-GmbH/merchant-sitemap-connector
-
If you want to retrieve sitemap data from Redis instead of DB, install
sitemap-storage
module:
Access Sitemap
The index of sitemap is /sitemap.xml
, so for example on demo shop that would be http://yves.de.spryker.local/sitemap.xml
In multi-store context, URLs of all stores are included in the same sitemap index file. Sitemap index file structure example when using abstract product connector:
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <sitemap> <loc>http://yves.at.spryker.local/sitemap_abstract_product_at_1.xml</loc> # AT store URLs </sitemap> <sitemap> <loc>http://yves.de.spryker.local/sitemap_abstract_product_de_1.xml</loc> # DE store URLs </sitemap> </sitemapindex>
However, if your stores are configured to use different databases, there will be separate sitemap index files for each different database