torann/laravel-meta-tags

用于管理头部元标签的包

3.0.9 2021-02-23 14:38 UTC

README

Latest Stable Version Total Downloads

使用此包,您可以从Laravel控制器中管理头部元标签。

安装

从命令行运行

$ composer require torann/laravel-meta-tags

一旦安装了Meta Tags,您需要将服务提供者注册到应用程序中。打开 config/app.php 并找到 providers 键。

'providers' => array(

    Torann\LaravelMetaTags\MetaTagsServiceProvider::class,

)

Meta Tags还提供了一个门面,它提供了创建集合的静态语法。您可以在您的 config/app.php 文件的 aliases 键中注册门面。

'aliases' => array(

    'MetaTag'   => Torann\LaravelMetaTags\Facades\MetaTag::class,

)

发布配置

从项目根目录运行此命令

$ php artisan vendor:publish --provider="Torann\LaravelMetaTags\MetaTagsServiceProvider"

配置文件将被发布到 config/meta-tags.php

Twitter Cards 和 OpenGraph

这些选项的设置可以在 config/meta-tags.php 文件中找到。

Twitter Cards

{!! MetaTag::twitterCard() !!}

OpenGraph

{!! MetaTag::openGraph() !!}

示例

app/Http/Controllers/Controller.php

<?php 

namespace App\Http\Controllers;

use Illuminate\Foundation\Bus\DispatchesCommands;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;

use MetaTag;

abstract class Controller extends BaseController 
{
    use DispatchesCommands, ValidatesRequests;

    public function __construct()
    {
        // Defaults
        MetaTag::set('description', 'Blog Wes Anderson bicycle rights, occupy Shoreditch gentrify keffiyeh.');
        MetaTag::set('image', asset('images/default-share-image.png'));
    }
}

app/Http/Controllers/HomeController.php

<?php 

namespace App\Http\Controllers;

use MetaTag;

class HomeController extends Controller 
{
    public function index()
    {
        // Section description
        MetaTag::set('title', 'You are at home');
        MetaTag::set('description', 'This is my home. Enjoy!');

        return view('index');
    }

    public function detail()
    {
        // Section description
        MetaTag::set('title', 'This is a detail page');
        MetaTag::set('description', 'All about this detail page');
        MetaTag::set('image', asset('images/detail-logo.png'));

        return view('detail');
    }

    public function private()
    {
        // Section description
        MetaTag::set('title', 'Private Area');
        MetaTag::set('description', 'You shall not pass!');
        MetaTag::set('image', asset('images/locked-logo.png'));

        return view('private');
    }
}

resources/views/layouts/app.blade.php

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <meta http-equiv="content-type" content="text/html; charset=utf-8">

        <meta name="viewport" content="width=device-width, initial-scale=1.0">

        <title>{{ MetaTag::get('title') }}</title>

        {!! MetaTag::tag('description') !!}
        {!! MetaTag::tag('image') !!}
        
        {!! MetaTag::openGraph() !!}
        
        {!! MetaTag::twitterCard() !!}

        {{--Set default share picture after custom section pictures--}}
        {!! MetaTag::tag('image', asset('images/default-logo.png')) !!}
    </head>

    <body>
        @yield('content')
    </body>
</html>