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')
Я чувствую, что это быстрый и грязный способ выполнить работу, есть ли более чистый способ?
4 answers
Это также работает:
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')
Это должно сработать:
@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);
Никто не думает, что лучший способ - создать свой собственный класс с фасадом (Сайт::заголовок (), Сайт::описание и т. Д.) и мутаторами (через Str::макрос), Которые автоматически проверяют, соответствует ли заголовок, описание и т. Д. В правильном формате (максимальная длина, добавление категорий, значения по умолчанию, разделители и т. Д.) И при необходимости клонируют данные в другие поля (заголовок=> og:заголовок, описание=> og:описание)?