目次
新年のご挨拶
遅ればせながら、明けましておめでとうございます。
今年もどうぞよろしくお願い致します。
今年の願望は
「溜まっている記事ネタをどんどん消化していきたい!!!」
(きっと、たぶん、恐らく、、、出来ると思う(^_^;)
私事ではございますが、昨年末をまちまして、退職することになりました。
いくつかの魅力的な企業様からお声を掛けていただき、大変嬉しいです。
しかし、自分が作りたいものを見つかったので、今年中にサービスインできるように頑張りたいと思います!
当分の間はフリーランスとして活動する予定なので、何かあったらお声をおかけください。
はじめに
今日はlaravel5でサイトマップを作成する方法を紹介したいと思います。
使用するパッケージはこちらになります。
↓
laravel-sitemap
laravel-sitemap パッケージの導入
- コンソールからcomposerを使って、パッケージをインストールする。
composer require roumen/sitemap
またはcomposer.json
を編集する。
"roumen/sitemap": "2.6.*"
config/app.php
の'providers'=>
に以下のコードを追加する。
Roumen\Sitemap\SitemapServiceProvider::class,
- コンソールから以下のコマンドを実行し、各種ファイルはコピーする。
php artisan vendor:publish --provider="Roumen\Sitemap\SitemapServiceProvider"
- Composerのアップデートを実施する。
composer update
ルーティングの設定
app\Http\routes.php
に以下のコードを追加する。
Route::get('sitemap', array('uses' => 'SitemapController@getIndex', 'as' => 'sitemap'));
コントロールの作成
app\Http\Controllers
にSitemapController.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
にアクセスするとこんな感じになります。