Trying to apply an individual title and meta description to my websites pages, but I'm not sure if the way I'm attempting is very clean.
master.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
<title>{{ $title }}</title>
<meta name="description" content="{{ $description }}">
</head>
individual page
@extends('layouts.master')
<?php $title = "This is an individual page title"; ?>
<?php $description = "This is a description"; ?>
@section('content')
I feel like this is a quick and dirty way to get the job done, is there a cleaner way?
This works as well:
master.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
<title>@yield('title')</title>
<meta name="description" content="@yield('description')">
</head>
individual page
@extends('layouts.master')
@section('title')
This is an individual page title
@stop
@section('description')
This is a description
@stop
@section('content')
or if you want to shorten that some more, alternately do this:
individual page
@extends('layouts.master')
@section('title', 'This is an individual page title')
@section('description', 'This is a description')
@section('content')
This should work:
@extends('layouts.master')
<?php View::share('title', 'title'); ?>
...
You can also do this:
@extends('views.coming-soon.layout', ['title' => 'This is an individual page title'])
Really recommend this:
https://github.com/artesaos/seotools
You pass the information to the the view require the content
SEOTools::setTitle($page->seotitle);
SEOTools::setDescription($page->seodescription);
no one think that the best way is to create your own class with facade (Site::title(), Site::description etc) and mutators (via Str::macro) that automatically check if title, description etc is in right format (max length, adding categories, defaults, separators, etc) and clone data to others fields (title => og:title, description => og:description) if necessary?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With