web-dev-qa-db-ja.com

Laravel 4ブレードマスターページを使用して各ページにタイトルとメタ情報を適用する方法

ウェブサイトのページに個々のタイトルとメタ説明を適用しようとしていますが、私が試みている方法が非常にきれいかどうかはわかりません。

master.blade.php

<!DOCTYPE html>
<html lang="en">
<head>
    <title>{{ $title }}</title>
    <meta name="description" content="{{ $description }}">
</head>

個々のページ

@extends('layouts.master')
<?php $title = "This is an individual page title"; ?>
<?php $description = "This is a description"; ?>

@section('content')

これは仕事を終わらせるための迅速で汚い方法だと思いますが、もっときれいな方法はありますか?

28
Mitch Glenn

これも機能します:

master.blade.php

<!DOCTYPE html>
<html lang="en">
<head>
    <title>@yield('title')</title>
    <meta name="description" content="@yield('description')">
</head>

個々のページ

@extends('layouts.master')

@section('title')
    This is an individual page title
@stop

@section('description')
    This is a description
@stop

@section('content')

またはそれをさらに短くしたい場合は、これを交互に行います:

個々のページ

@extends('layouts.master')

@section('title', 'This is an individual page title')
@section('description', 'This is a description')

@section('content')
86
zeckdude

これは動作するはずです:

@extends('layouts.master')
<?php View::share('title', 'title'); ?>

...

これを行うこともできます:

@extends('views.coming-soon.layout', ['title' => 'This is an individual page title'])

これを本当にお勧めします:

https://github.com/artesaos/seotools

コンテンツを必要とするビューに情報を渡します

SEOTools::setTitle($page->seotitle);
SEOTools::setDescription($page->seodescription);
2

最良の方法は、ファサード(Site :: title()、Site :: descriptionなど)と、タイトル、説明などが正しい形式であるかどうかを自動的にチェックするミューテーター(Str :: macroを使用)で独自のクラスを作成することだとは考えていません(最大長、カテゴリ、デフォルト、セパレータなどの追加)および必要に応じて他のフィールド(タイトル=> og:title、説明=> og:description)にデータを複製しますか?

1
user2020432

DBから動的に生成されるようにタイトルで変数を使用する場合、次のようにします。

master.blade.php

<title>@yield('title')</title>

article.blade.php

@section( 'title', '' . e($article->title) )

https://laravel.com/docs/5.7/helpers#method-e を使用します

0
Jquestions