leama / sitemap-generator
There is no license information available for the latest version (1.0.0) of this package.
Generate site map file by array of pages and extension
1.0.0
2025-07-01 17:45 UTC
Requires
- php: >=8.2
- ext-dom: *
- ext-simplexml: *
This package is auto-updated.
Last update: 2025-07-01 13:56:22 UTC
README
Библиотека для генерации карты сайта в различных форматах с поддержкой валидации данных.
Поддерживаемые форматы
- XML (
xml
) - JSON (
json
) - CSV (
csv
)
Особенности
- Валидация данных каждой страницы
- Проверка соответствия формата файла и генерации
- Поддержка различных форматов даты
- Гибкая настройка путей сохранения
- Автоматическое создание папок при необходимости
Установка
Установите библиотеку с помощью Composer:
composer require leama/sitemap-generator
Использование
1. Генерация карты сайта
use App\Application\SitemapGeneration\Enum\FormatEnum; use App\Application\SitemapGeneration\Exception\FormatException; use App\Infrastructure\SitemapGenerator\Exception\SitemapException; use App\Infrastructure\SitemapGenerator\SitemapGenerator; $pages = [ [ 'loc' => 'https://site.com/', 'lastmod' => '2024-07-23', 'priority' => 1.0, 'changefreq' => 'daily' ], ]; try { $sitemapGenerator = new SitemapGenerator($pages, SitemapGenerationFormat::CSV, 'path/to/file.csv'); $sitemapGenerator->generate(); echo 'File was generate successfully!'; } catch (FormatException|SitemapException $e) { echo "Ошибка: " . $e->getMessage(); }
2. Проверка валидации данных
use App\Application\SitemapGeneration\Enum\FormatEnum; use App\Application\SitemapGeneration\Exception\FormatException; use App\Infrastructure\SitemapGenerator\Exception\SitemapException; use App\Infrastructure\SitemapGenerator\SitemapGenerator; $pages = [ [ 'loc' => 'site', // Неверный формат 'lastmod' => '2024-06-29', 'priority' => 1.0, 'changefreq' => 'tomorrow' ] ]; // Инициализация...
Результат:
Invalid URL format in 'loc' field for page 0
use App\Application\SitemapGeneration\Enum\FormatEnum; use App\Application\SitemapGeneration\Exception\FormatException; use App\Infrastructure\SitemapGenerator\Exception\SitemapException; use App\Infrastructure\SitemapGenerator\SitemapGenerator; $pages = [ [ 'loc' => 'https://site.com/', 'lastmod' => '23.07.2024', // Неверный формат 'priority' => 1.0, 'changefreq' => 'tomorrow' ] ]; // Инициализация...
Результат:
Invalid date format in 'lastmod' for page 0. Use YYYY-MM-DD
use App\Application\SitemapGeneration\Enum\FormatEnum; use App\Application\SitemapGeneration\Exception\FormatException; use App\Infrastructure\SitemapGenerator\Exception\SitemapException; use App\Infrastructure\SitemapGenerator\SitemapGenerator; $pages = [ [ 'loc' => 'https://site.com/', 'lastmod' => '2024-07-23', 'priority' => 1.2, // Ошибка: priority должен быть от 0.0 до 1.0 'changefreq' => 'daily' ] ]; // Инициализация...
Результат:
'priority' must be between 0.0 and 1.0 in page 0
Доступны следующие варианты частоты обновления:
- hourly
- daily
- weekly
- monthly
- yearly
- never
Указаны в ChangeFreqEnum.php.
use App\Application\SitemapGeneration\Enum\FormatEnum; use App\Application\SitemapGeneration\Exception\FormatException; use App\Infrastructure\SitemapGenerator\Exception\SitemapException; use App\Infrastructure\SitemapGenerator\SitemapGenerator; $pages = [ [ 'loc' => 'https://site.com/', 'lastmod' => '2024-07-23', 'priority' => 1.0, 'changefreq' => 'tomorrow' // Ошибка ] ]; // Инициализация...
Результат:
Invalid 'changefreq' value in page 0. Valid values: hourly, daily, weekly, monthly, yearly, never
use App\Application\SitemapGeneration\Enum\FormatEnum; use App\Application\SitemapGeneration\Exception\FormatException; use App\Infrastructure\SitemapGenerator\Exception\SitemapException; use App\Infrastructure\SitemapGenerator\SitemapGenerator; $pages = []; try { $sitemapGenerator = new SitemapGenerator($pages, SitemapGenerationFormat::CSV, 'path/to/file.xml'); $sitemapGenerator->generate(); print 'File was generate successfully!'; } catch (FormatException|SitemapException $e) { print $e->getMessage(); }
Результат:
The file format does not match the generation format