WEBやプログラムなど色々発信します

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の中身が反映されます。

以上です。

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

コメントを残す

メールアドレスが公開されることはありません。