Published on

laravelでページごとにtitleとdescriptionを簡単に変える

目次

    seoを考えるとtitleとdescriptionは変えないとねーってことで
    今回は検索ワードで簡単に変更する方法です。
    そういえば気にしてなかったって人はぜひこの機会に。

    変更するのはviewのbladeとControlloerです。

    まずControlloerから。

    public function index(Request $request)
    {
            if(!empty($keyword))
            {
               $query = Post::query();   
                $result = $query->Where('text','like','%'.$keyword.'%')->orderBy('created','desc')->simplePaginate(20);
        
                return View('posts.index', [
                //viewにキーワードを渡す
                'result' => $result,'keyword'=> $keyword
            ]);
            }else{
                  //$keywordが空の場合
                $result = Post::orderBy('created','desc')->simplePaginate(20);
                
                return View('posts.index', [
                'result' => $result
            ]);
            }
    }
    

    ブレードの共通部分。

    layouts/default.blade.php

    //ヘッダー部分
    <title>@yield('title','タイトル - サイト名')</title>
    <meta name="description" itemprop="description" content="@yield('description','サイト説明')">
    

    hoge/index.blade.php

    @extends('layouts.default')
    //keyword入っているかい?
    @if (isset($keyword))
    @section('title', $keyword.'の検索結果 - サイト名')
    @section('description', $keyword.'の検索結果です。サイト説明' )
    @endif
    

    keywordは検索ワードが入っているのでブラウザで表示したときにkeywordは検索ワードが入っているのでブラウザで表示したときにkeywordの中身が反映されます。

    以上です。

    titleとdescriptionに動的に入れたいキーワードをcontrollerからviewに渡せばいいって考えればいいかと思います。
    ではでは。