laravel-Meta

by eusonlito

eusonlito /laravel-Meta

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

135 Stars 74 Forks Last release: 7 months ago (v3.1.7) MIT License 75 Commits 23 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

HTML Meta Tags management package available for Laravel 5/5.1/5.2/5.3/5.4

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.