LoginSignup
15
17

More than 5 years have passed since last update.

Laravelでsitemap.xmlを動的に作る!

Last updated at Posted at 2018-12-10

GameWith Advent Calendar 2018

この記事はGameWith Advent Calendar 2018 の11日目になります!

はじめに

今回はLaravelに作ったサイトにsitemapl.xmlを追加する方法を書いていきます。

※実際にこんな感じで表示されます

https://www.holy-place-photo.com/sitemap

スクリーンショット 2018-12-09 12.52.39.png

前提

  • Laravel version 5.6

laravelium/sitemap

利用するのはlaravelium/sitemapというパッケージです。

まずインストールをします。

composer require laravelium/sitemap

githubにはLaravelのバージョンに合わせてパッケージのバージョンが書かれていたので、合わせたほうがいいかと思います。

For Laravel 5.7

"laravelium/sitemap": "3.0.*"

For Laravel 5.6

"laravelium/sitemap": "2.8.*"

For Laravel 5.5

"laravelium/sitemap": "2.7.*"

次に必要なファイルを生成します。

php artisan vendor:publish --provider="Laravelium\Sitemap\SitemapServiceProvider"

コーディング

必要なファイルを生成したら、ルーティングとコントローラーを記述します。

routes/web.php
Route::get('/sitemap', 'SiteMapController@sitemap'); 
app/Http/Controllers/SiteMapController.php
<?php

namespace App\Http\Controllers;

use App\Model\Photo;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\URL;
use Carbon\Carbon;

class siteMapController extends Controller
{
    public function sitemap(){
        $sitemap = App::make("sitemap");
        $now = Carbon::now();
        $sitemap->add(URL::to('/'), $now, '1.0', 'always');
        $sitemap->add(URL::to('/photos/create'), '2018-10-28', '1.0', 'monthly');

        $photos = Photo::orderBy('updated_at', 'desc')->get();
        foreach ($photos as $photo)
        {
            $sitemap->add(URL::to('/photos/' . $photo->id), $photo->updated_at, '0.8', 'yearly');
        }

        return $sitemap->render('xml');
    }
}

詳しくはこちらの公式GitLabのWikiに書いてあります。

https://gitlab.com/Laravelium/Sitemap/wikis/home

おわりに

めちゃくちゃ簡単ですね!

最後の$sitemap->render('xml')$sitemap->store('xml', 'mysitemap');とすることで、XMLファイルとして出力することも可能っぽいです。

ルーティングに新しく追加したら、サイトマップの更新も忘れずにやりましょう!

絶対忘れそう・・・

15
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
17