Laravel 4如何使用刀片母版页面将标题和元信息应用于每个页面

时间:2014-02-15 23:13:32

标签: php html laravel laravel-4 blade

尝试将单个标题和元描述应用于我的网站页面,但我不确定我尝试的方式是否非常干净。

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')

我觉得这是一种快速而肮脏的方式来完成工作,是否有更清洁的方式?

5 个答案:

答案 0 :(得分:86)

这也有效:

<强> 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')

答案 1 :(得分:8)

这应该有效:

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

...

你也可以这样做:

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

答案 2 :(得分:2)

真的推荐这个:

https://github.com/artesaos/seotools

您将信息传递给视图需要内容

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

答案 3 :(得分:1)

没有人认为最好的方法是使用facade(Site :: title(),Site :: description等)和mutators(通过Str :: macro)创建自己的类,自动检查标题,描述等是否如果有必要,以正确的格式(最大长度,添加类别,默认值,分隔符等)和克隆数据到其他字段(title =&gt; og:title,description =&gt; og:description)?

答案 4 :(得分:0)

如果您想在标题中使用变量,以便从数据库中动态生成该变量,则可以这样操作:

master.blade.php

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

article.blade.php

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

它使用https://laravel.com/docs/5.7/helpers#method-e