Need help with laravel-Meta?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

eusonlito
143 Stars 74 Forks MIT License 76 Commits 9 Opened issues

Description

HTML Meta Tags management package available for for Laravel 5.*

Services available

!
?

Need anything else?

Contributors list

No Data

HTML Meta Tags management package available for Laravel 5/6/7/8

Build Status Latest Stable Version Total Downloads License

With this package you can manage header Meta Tags from Laravel controllers.

If you want a Laravel <= 4.2 compatible version, please use

v4.2
branch.

Installation

Begin by installing this package through Composer.

{
    "require": {
        "eusonlito/laravel-meta": "3.1.*"
    }
}

Laravel installation

// config/app.php

'providers' => [ '...', Eusonlito\LaravelMeta\MetaServiceProvider::class ];

'aliases' => [ '...', 'Meta' => Eusonlito\LaravelMeta\Facade::class, ];

Now you have a

Meta
facade available.

Publish the config file:

php artisan vendor:publish --provider="Eusonlito\LaravelMeta\MetaServiceProvider"

app/Http/Controllers/Controller.php

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

use Meta;

abstract class Controller extends BaseController { use DispatchesCommands, ValidatesRequests;

public function __construct()
{
    # Default title
    Meta::title('This is default page title to complete section title');

    # Default robots
    Meta::set('robots', 'index,follow');

    # Default image
    Meta::set('image', asset('images/logo.png'));
}

}

app/Http/Controllers/HomeController.php

use Meta;

class HomeController extends Controller { public function index() { # Section description Meta::set('title', 'You are at home'); Meta::set('description', 'This is my home. Enjoy!'); Meta::set('image', asset('images/home-logo.png'));

    return view('index');
}

public function detail()
{
    # Section description
    Meta::set('title', 'This is a detail page');
    Meta::set('description', 'All about this detail page');

    # Remove previous images
    Meta::remove('image');

    # Add only this last image
    Meta::set('image', asset('images/detail-logo.png'));

    # Canonical URL
    Meta::set('canonical', 'http://example.com');

    return view('detail');
}

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

    # Custom robots for this section
    Meta::set('robots', 'noindex,nofollow');

    return view('private');
}

}

resources/views/html.php

    <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">
    <meta name="author" content="Lito - [email protected]">

    <title>{!! Meta::get('title') !!}</title>

    {!! Meta::tag('robots') !!}

    {!! Meta::tag('site_name', 'My site') !!}
    {!! Meta::tag('url', Request::url()); !!}
    {!! Meta::tag('locale', 'en_EN') !!}

    {!! Meta::tag('title') !!}
    {!! Meta::tag('description') !!}

    {!! Meta::tag('canonical') !!}

    {{-- Print custom section images and a default image after that --}}
    {!! Meta::tag('image', asset('images/default-logo.png')) !!}



    ...

Or you can use Blade directives:

    <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">
    <meta name="author" content="Lito - [email protected]">

    <title>{!! Meta::get('title') !!}</title>

    @meta('robots')

    @meta('site_name', 'My site')
    @meta('url', Request::url())
    @meta('locale', 'en_EN')

    @meta('title')
    @meta('description')

    @meta('canonical')

    {{-- Print custom section images and a default image after that --}}
    @meta('image', asset('images/default-logo.png'))

    {{-- Or use @metas to get all tags at once --}}
    @metas




    ...

Config

return [
    /*
    |--------------------------------------------------------------------------
    | Limit title meta tag length
    |--------------------------------------------------------------------------
    |
    | To best SEO implementation, limit tags.
    |
    */

'title_limit' =&gt; 70,

/*
|--------------------------------------------------------------------------
| Limit description meta tag length
|--------------------------------------------------------------------------
|
| To best SEO implementation, limit tags.
|
*/

'description_limit' =&gt; 200,

/*
|--------------------------------------------------------------------------
| Limit image meta tag quantity
|--------------------------------------------------------------------------
|
| To best SEO implementation, limit tags.
|
*/

'image_limit' =&gt; 5,

/*
|--------------------------------------------------------------------------
| Available Tag formats
|--------------------------------------------------------------------------
|
| A list of tags formats to print with each definition
|
*/

'tags' =&gt; ['Tag', 'MetaName', 'MetaProperty', 'TwitterCard'],

];

Using Meta outside Laravel

Controller

require __DIR__.'/vendor/autoload.php';

// Check default settings $config = require DIR.'/src/config/config.php';

$Meta = new Eusonlito\LaravelMeta\Meta($config);

Default title

$Meta->title('This is default page title to complete section title');

Default robots

$Meta->set('robots', 'index,follow');

Section description

$Meta->set('title', 'This is a detail page'); $Meta->set('description', 'All about this detail page'); $Meta->set('image', '/images/detail-logo.png');

Canonical URL

$Meta->set('canonical', 'http://example.com');

Template

= $Meta->get('title'); ?>

= $Meta->tag('robots'); ?>

= $Meta->tag('site_name', 'My site'); ?> = $Meta->tag('url', getenv('REQUEST_URI')); ?> = $Meta->tag('locale', 'en_EN'); ?>

= $Meta->tag('title'); ?> = $Meta->tag('description'); ?>

= $Meta->tag('canonical'); ?>

Print custom section image and a default image after that

= $Meta->tag('image', '/images/default-logo.png'); ?>

Updates from 2.*

  • Meta::meta('title', 'Section Title')
    >
    Meta::set('title', 'Section Title')
  • Meta::meta('title')
    >
    Meta::get('title')
  • Meta::tagMetaName('title')
    >
    Meta::tag('title')
  • Meta::tagMetaProperty('title')
    >
    Meta::tag('title')

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.