GameWith Advent Calendar 2018
この記事はGameWith Advent Calendar 2018 の11日目になります!
はじめに
今回はLaravelに作ったサイトにsitemapl.xmlを追加する方法を書いていきます。
※実際にこんな感じで表示されます
https://www.holy-place-photo.com/sitemap
前提
- 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"
コーディング
必要なファイルを生成したら、ルーティングとコントローラーを記述します。
Route::get('/sitemap', 'SiteMapController@sitemap');
<?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ファイルとして出力することも可能っぽいです。
ルーティングに新しく追加したら、サイトマップの更新も忘れずにやりましょう!
絶対忘れそう・・・