Rapidez sitemap index through Eventy filters
composer require rapidez/sitemap
You can publish the configuration file with:
php artisan vendor:publish --tag=config --provider="Rapidez\Sitemap\SitemapServiceProvider"
This will create a config/rapidez-sitemap.php
file where you can configure:
disk
: The Laravel filesystem disk to use (defaults to 'public')path
: The path within the disk where sitemaps will be stored (defaults to root)
Make sure the specified disk is properly configured in your application's config/filesystems.php
.
You can publish the views with:
php artisan vendor:publish --tag=rapidez-sitemap-views
To generate the sitemap manually, use:
php artisan rapidez:sitemap:generate
This command will generate sitemap.xml
for the default store and sitemap_{store_id}.xml
for additional stores in your configured storage location.
If you'd like to schedule the sitemap generation you can add the rapidez:sitemap:generate
command in routes/console.php
, for more information see Task Scheduling
Schedule::command('rapidez:sitemap:generate')->twiceDaily(0, 12);
When the rapidez:sitemap:generate
command runs, an Eventy action rapidez.sitemap.generate
is triggered.
You can hook into this generation process by adding an action in the boot
method of your service provider:
Eventy::addAction('rapidez.sitemap.generate', fn() => DoMagicHere(), 20, 1);
If you have additional indexes, such as CMS pages or other custom routes, you can dynamically add them to your sitemap index based on the Store ID using the rapidez.site.{storeId}
filter provided by Eventy.
To do this, simply add the following code to the appropriate place in your application (e.g., in a service provider or a dedicated sitemap configuration file):
use TorMorten\Eventy\Facades\Eventy;
Eventy::addFilter('rapidez.sitemap.{storeId}', function ($sitemaps) {
// Add your custom sitemap URL here
$sitemaps[] = [
'url' => 'your-custom-sitemap.xml',
'lastmod' => now()->toDateString(),
];
return $sitemaps;
}, 20, 1);
GNU General Public License v3. Please see License File for more information.