Sitemap-провайдер
Как добавить URL-адреса своего модуля в автоматически генерируемый Sitemap
Как это работает
Создание провайдера
<?php
declare(strict_types=1);
namespace Johncms\Modules\MyModule\Application\Sitemap;
use Johncms\Modules\MyModule\Domain\Models\MyModel;
use Johncms\Sitemap\SitemapUrlEntry;
use Johncms\Sitemap\SitemapUrlProviderInterface;
final class MyModuleUrlsProvider implements SitemapUrlProviderInterface
{
public function groupName(): string
{
// Уникальное имя группы — определяет имя файла: sitemap-my-module-1.xml
return 'my-module';
}
/**
* @return iterable<SitemapUrlEntry>
*/
public function getEntries(string $homeUrl): iterable
{
$items = MyModel::query()
->select(['id', 'slug', 'updated_at'])
->orderBy('id')
->cursor(); // cursor() вместо get() экономит память на больших таблицах
foreach ($items as $item) {
yield new SitemapUrlEntry(
loc: $homeUrl . '/my-module/' . $item->slug . '/',
lastmod: $item->updated_at?->format('c'),
);
}
}
}SitemapUrlEntry
Параметр
Тип
Описание
Регистрация провайдера
Важные моменты
Это было полезно?