
Создание xml sitemaps отлично подходит для того, чтобы Google сообщал своим поисковым роботам обо всех ваших страницах и их URL-адресах для их индексирования. В этом коротеньком посте я расскажу, как создать в laravel sitemap или же xml карту сайта …
Sitemap можно сгенерировать несколькими способами. Вы можете использовать специальный пакет, об одном из которых я уже писал обзор по ссылке тут. Или все сделать самостоятельно, как в примере ниже.
Что такое карта сайта?
На самом деле все очень банально и просто. Карта сайта — это обычный структурированный XML файл. Другими словами — это просто список всех страниц вашего сайта в виде ссылок, которые перечисляются в некотором сгенерированном xml файле.
Генерация Laravel sitemap xml
Для начала создадим роутер ( route ) на котором будет висеть созданная карта:
Route::get('sitemap.xml', 'BlogController@sitemap');
Теперь добавим метод для загрузки постов и вывода их в нужный вид (view):
public function sitemap() { $posts = Post::get(); return view('sitemap')->with(compact('posts')); }
В загружаемом виде не забываем добавить Request::header
, чтобы установить тип содержимого на «text/xml» и вывести версию xml. Далее добавляем urlset
тег и прогоняем внутри все записи, где выводим:
- loc — URL страницы;
- lastmod — отформатированная дата последнего изменения;
- changefreq — частота обновления контента;
- priority — приоритетность к индексации страницы (от 0 до 1).
{{ Request::header('Content-Type : text/xml') }} <?php echo '<?xml version="1.0" encoding="UTF-8"?>';?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> @foreach ($posts as $post) <url> <loc>{{ url($post->slug) }}</loc> <lastmod>{{ $post->updated_at->tz('GMT')->toAtomString() }}</lastmod> <changefreq>monthly</changefreq> <priority>1</priority> </url> @endforeach </urlset>
Теперь, осталось добавить только ссылку на созданную карту сайта в шапку страницы и все готово!
<link href='{{ url('sitemap.xml') }}' rel='alternate' title='Sitemap' type='application/rss+xml'/>
Кстати, практически аналогичным способом создается RSS лента, но об этом я уже расскажу возможно в следующих постах. 😎