web-dev-qa-db-fra.com

Laravel 4 comment appliquer le titre et les métadonnées à chaque page avec la page maître de lame

Essayer d'appliquer un titre individuel et une méta description à mes pages de sites Web, mais je ne sais pas si la façon dont j'essaie est très propre.

master.blade.php

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

page individuelle

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

@section('content')

J'ai l'impression que c'est un moyen rapide et sale de faire le travail, y a-t-il un moyen plus propre?

28
Mitch Glenn

Cela fonctionne également:

master.blade.php

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

page individuelle

@extends('layouts.master')

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

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

@section('content')

ou si vous voulez en raccourcir un peu plus, faites alternativement ceci:

page individuelle

@extends('layouts.master')

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

@section('content')
86
zeckdude

Cela devrait fonctionner:

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

...

Vous pouvez également faire ceci:

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

Je recommande vraiment ceci:

https://github.com/artesaos/seotools

Vous transmettez les informations à la vue nécessite le contenu

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

personne ne pense que le meilleur moyen est de créer votre propre classe avec façade (Site :: title (), Site :: description etc) et des mutateurs (via Str :: macro) qui vérifient automatiquement si le titre, la description, etc. est au bon format (longueur maximale, ajout de catégories, valeurs par défaut, séparateurs, etc.) et cloner les données dans d'autres champs (titre => og: titre, description => og: description) si nécessaire?

1
user2020432

Si vous souhaitez utiliser une variable dans votre titre afin qu'elle soit générée dynamiquement à partir de votre base de données, je le fais comme ceci:

master.blade.php

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

article.blade.php

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

Il utilise https://laravel.com/docs/5.7/helpers#method-e

0
Jquestions