laravel5でサイトマップを作成する方法(新年のご挨拶を兼ねて)

新年のご挨拶

遅ればせながら、明けましておめでとうございます。
今年もどうぞよろしくお願い致します。

今年の願望は
「溜まっている記事ネタをどんどん消化していきたい!!!」
(きっと、たぶん、恐らく、、、出来ると思う(^_^;)

私事ではございますが、昨年末をまちまして、退職することになりました。
いくつかの魅力的な企業様からお声を掛けていただき、大変嬉しいです。
しかし、自分が作りたいものを見つかったので、今年中にサービスインできるように頑張りたいと思います!
当分の間はフリーランスとして活動する予定なので、何かあったらお声をおかけください。

はじめに

今日はlaravel5でサイトマップを作成する方法を紹介したいと思います。
使用するパッケージはこちらになります。

laravel-sitemap

laravel-sitemap パッケージの導入

  1. コンソールからcomposerを使って、パッケージをインストールする。
composer require roumen/sitemap

またはcomposer.jsonを編集する。

"roumen/sitemap": "2.6.*"
  1. config/app.php'providers'=>に以下のコードを追加する。
Roumen\Sitemap\SitemapServiceProvider::class,
  1. コンソールから以下のコマンドを実行し、各種ファイルはコピーする。
php artisan vendor:publish --provider="Roumen\Sitemap\SitemapServiceProvider"
  1. Composerのアップデートを実施する。
composer update

ルーティングの設定

app\Http\routes.phpに以下のコードを追加する。

Route::get('sitemap', array('uses' => 'SitemapController@getIndex', 'as' => 'sitemap'));

コントロールの作成

app\Http\ControllersSitemapController.phpを作成する。

↓sample

<!--?php namespace App\Http\Controllers; use App\Models\Question; use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\DB; class SitemapController extends Controller { public function getIndex() { $sitemap = App::make("sitemap"); $sitemap->setCache('laravel.sitemap', 3600);</p>
<p>        //固定ページ<br ?--> $sitemap->add(route('website.index'), date('Y-m-d H:i:s', time()), 1.0, 'daliy', null, 'ホーム', array(array('url' => route('website.index'), 'language' => 'ja')), null, null, null);

//質問ページ
$lists = DB::table('questions')->orderBy('updated_at','DESC')->get();
foreach ($lists as $list) {
$translations = array(
array(
'url' => route('ask.question.detail',['id'=>$list->id]),
'language' => 'ja'
)
);
$sitemap->add(
route('ask.question.detail',['id'=>$list->id]),
date('Y-m-d H:i:s', strtotime($list->updated_at)),
1.0,
'daliy',
null,
$list->title,
$translations,
null,
null,
null
);
}

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

}

****↓基本的な説明****

public function getIndex()
{
//sitemapのパッケージを呼び出す
$sitemap = App::make("sitemap");
/キャッシュ時間の設定
$sitemap->setCache('laravel.sitemap', 3600);

//DBから出力したいデータを取り出す
$lists = DB::table('questions')->orderBy('updated_at','DESC')->get();
foreach ($lists as $list) {
$translations = array(
array(
'url' => URL,
'language' => 言語区分
)
);
$sitemap->add(
URL,
更新日,
優先度,
更新頻度,
画像,
タイトル,
$translations,
動画,
GoogleNews,
alternate設定
);
}

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

各種ファイルパス

  • 設定ファイル:config\sitemap.php
  • テンプレート類:resources\vendor\sitemap以下
  • パッケージ:vendor\roumen\sitemap

実際に出力する

http://xxx.xxx.xxx/sitemapにアクセスするとこんな感じになります。

Sitemap

– PR –
– PR –