Laravel sitemap создаем xml карту сайта в несколько строк кода

Laravel sitemap создаем xml карту сайта в несколько строк кода

Создание 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 лента, но об этом я уже расскажу возможно в следующих постах.  😎 

Подписаться на новые статьи