Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Laravel 4 how to apply title and meta information to each page with blade master page

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?

like image 354
Mitch Avatar asked Feb 15 '14 23:02

Mitch


4 Answers

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')
like image 51
zeckdude Avatar answered Nov 06 '22 00:11

zeckdude


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'])
like image 45
Antonio Carlos Ribeiro Avatar answered Nov 06 '22 00:11

Antonio Carlos Ribeiro


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);
like image 2
Paolo Resteghini Avatar answered Nov 05 '22 22:11

Paolo Resteghini


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?

like image 1
user2020432 Avatar answered Nov 06 '22 00:11

user2020432