Skip to content

rankarpan/seotools

 
 

Repository files navigation

SEOTools - SEO Tools para Laravel e Lumen

Readme in English.

SEOTools é um pacote para Laravel 5 e Lumen que disponibiliza helpers para algumas técnicas comuns de SEO.

Estado atual do Pacote

Build Status Code Climate Codacy Badge

Estatísticas

Latest Stable Version Total Downloads Latest Unstable Version License Laravel Brasil no Slack

Dicas

Powered by ZenHub

Recursos

  • Interface amigável
  • Facilidade para configurar títulos e meta tags
  • Facilidade para configurar meta tags para Twitter e Open Graph (Facebook)

Instalação

1 - Dependência

O primeiro passo é utilizar o Composer para instalar este pacote e atualizar, automaticamente, o seu arquivo composer.json, você pode fazer isso executando o seguinte comando:

composer require artesaos/seotools

2 - Provider

Você precisa atualizar as configurações da sua aplicação, a fim de registrar o pacote, possibilitando o carregamento pelo seu framework.

Laravel

Vá até o final do seu arquivo config/app.php e adicione esta linha:

// Começo do arquivo omitido
    'providers' => [
        // Outros Providers omitidos
        'Artesaos\SEOTools\Providers\SEOToolsServiceProvider',
    ],
// Final do arquivo omitido

Lumen

Vá até o seu arquivo /bootstrap/app.php e adicione esta linha:

// Começo do arquivo omitido
	$app->register('Artesaos\SEOTools\Providers\SEOToolsServiceProvider');
// Final do arquivo omitido

3 - Facade

Facades não são suportados no Lumen.

Para que você possa usar o Facade SEOMeta, você precisa registrá-lo no arquivo config/app.php, você pode fazer isso da seguinte maneira:

// Começo do arquivo omitido
    'aliases' => [
        // Outros Facades omitidos
        'SEOMeta'   => 'Artesaos\SEOTools\Facades\SEOMeta',
        'OpenGraph' => 'Artesaos\SEOTools\Facades\OpenGraph',
        'Twitter' => 'Artesaos\SEOTools\Facades\Twitter',
        // ou
        'SEO' => 'Artesaos\SEOTools\Facades\SEOTools',
    ],
// Final do arquivo omitido

4 Configurações

Publicar configurações

No seu terminal execute:

php artisan vendor:publish

ou

php artisan vendor:publish --provider="Artesaos\SEOTools\Providers\SEOToolsServiceProvider"

Lumen não suporta este comando, portanto você precisa copiar o arquivo src/resources/config/seotools.php para config/seotools.php no seu projeto

No arquivo de configuração seotools.php você pode determinar as propriedades dos valores padrão e alguns comportamentos

seotools.php

  • meta
  • defaults - Define os valores que serão exibidos na página acessada, caso nenhum valor seja especificado. Se o valor for false, nada é exibido.
  • webmaster - Define os valores de configuração para as principais ferramentas de webmaster. Se o valor for null, nada é exibido.
  • opengraph
  • defaults - Define as propriedades padrão, que serão exibidas, caso nenhuma outra seja definida. Você pode adicionar tags adicionais que não estão inclusas no arquivo original de configuração.
  • twitter
  • defaults - Define as propriedades padrão, que serão exibidas, caso nenhuma outra seja definida. Você pode adicionar tags adicionais que não estão inclusas no arquivo original de configuração.

5 - Como usar

No Lumen

Facades não são suportados no Lumen.

$seotools = app('seotools');
$metatags = app('seotools.metatags');
$twitter = app('seotools.twitter');
$opengraph = app('seotools.opengraph');

// O resultado é o mesmo que usando Facades
// --------

echo app('seotools')->generate();

No Laravel

Gerador de Meta Tags

Com SEOMeta você pode gerar meta tags para o head da sua página

Gerador de tags Open Graph

Com OpenGraph você pode gerar tags Open Graph para o head da sua página

Gerador de Twitter Cards para o Twitter

Com Twitter você pode gerar tags Twitter Card para o head da sua página

No seu Controller
use SEOMeta;
use OpenGraph;
use Twitter;
## ou
use SEO;

class CommomController extends Controller
{

    /**
     * @return \Illuminate\View\View
     */
    public function index()
    {
        SEOMeta::setTitle('Página Inicial');
        SEOMeta::setDescription('Esta é a descrição da minha página');

        OpenGraph::setDescription('Esta é a descrição da minha página');
        OpenGraph::setTitle('Página Inicial');
        OpenGraph::setUrl('http://exemplo.url.com');
        OpenGraph::addProperty('type', 'articles');
        
        Twitter::setTitle('Página Inicial');
        Twitter::setSite('@LuizVinicius73');
        
        ## Ou
        
        SEO::setTitle('Página Inicial');
        SEO::setDescription('Esta é a descrição da minha página');
        SEO::opengraph()->setUrl('http://exemplo.url.com');
        SEO::opengraph()->addProperty('type', 'articles');
        SEO::twitter()->setSite('@LuizVinicius73');
        
        $posts = Post::all();

        return view('myindex', compact('posts'));
    }

    /**
     * @return \Illuminate\View\View
     */
    public function show($id)
    {
        $post = Post::find($id);

        SEOMeta::setTitle($post->title);
        SEOMeta::setDescription($post->resume);
        SEOMeta::addMeta('article:published_time', $post->published_date->toW3CString(), 'property');
        SEOMeta::addMeta('article:section', $post->category, 'property');
        SEOMeta::addKeyword(['key1', 'key2', 'key3']);

        OpenGraph::setDescription($post->resume);
        OpenGraph::setTitle($post->title);
        OpenGraph::setUrl('http://current.url.com');
        OpenGraph::addProperty('type', 'article');
        OpenGraph::addProperty('locale', 'pt-br');
        OpenGraph::addProperty('locale:alternate', ['pt-pt', 'en-us']);

        OpenGraph::addImage($post->cover->url);
        OpenGraph::addImage($post->images->list('url'));
        OpenGraph::addImage(['url' => 'http://image.url.com/cover.jpg', 'size' => 300]);

        return view('myshow', compact('post'));
    }
}
SEOTrait
use Artesaos\SEOTools\Traits\SEOTools as SEOToolsTrait;

class CommomController extends Controller
{
    use SEOToolsTrait;

    /**
     * @return \Illuminate\View\View
     */
    public function index()
    {
        $this->seo()->setTitle('Página Inicial');
        $this->seo()->setDescription('Esta é a descrição da minha página');
        $this->seo()->opengraph()->setUrl('http://current.url.com');
        $this->seo()->opengraph()->addProperty('type', 'articles');
        $this->seo()->twitter()->setSite('@LuizVinicius73');
        
        $posts = Post::all();

        return view('myindex', compact('posts'));
    }
}
Na sua View
<html>
<head>
	{!! SEOMeta::generate() !!}
	{!! OpenGraph::generate() !!}
	{!! Twitter::generate() !!}
	    <!-- Ou -->
	{!! SEO::generate() !!}
	
	    <!-- Lumen -->
	{!! app('seotools')->generate() !!}
</head>
<body>

</body>
</html>
Resultado
<html>
<head>
    <title>Title - Over 9000 Thousand!</title>
    <meta name='description' itemprop='description' content='description...' />
    <meta name='keywords' content='key1, key2, key3' />
    <meta property='article:published_time' content='2015-01-31T20:30:11-02:00' />
    <meta property='article:section' content='news' />

    <meta property="og:description"content="description..." />
    <meta property="og:title"content="Title" />
    <meta property="og:url"content="http://current.url.com" />
    <meta property="og:type"content="article" />
    <meta property="og:locale"content="pt-br" />
    <meta property="og:locale:alternate"content="pt-pt" />
    <meta property="og:locale:alternate"content="en-us" />
    <meta property="og:site_name"content="name" />
    <meta property="og:image"content="http://image.url.com/cover.jpg" />
    <meta property="og:image"content="http://image.url.com/img1.jpg" />
    <meta property="og:image"content="http://image.url.com/img2.jpg" />
    <meta property="og:image"content="http://image.url.com/img3.jpg" />
    <meta property="og:image:url"content="http://image.url.com/cover.jpg" />
    <meta property="og:image:size"content="300" />
    
    <meta name="twitter:card"content="summary" />
    <meta name="twitter:title"content="Title" />
    <meta name="twitter:site"content="@LuizVinicius73" />

</head>
<body>

</body>
</html>
API (SEOMeta)
SEOMeta::SetTitleSeparator($seperator);
SEOMeta::setTitle($title);
SEOMeta::setDescription($description);
SEOMeta::setKeywords($keywords);
SEOMeta::addKeyword($keyword);
SEOMeta::addMeta($meta, $value = null, $name = 'name');

// Você pode usar métodos em cadeia
SEOMeta::setTitle($title)
            ->setDescription($description)
            ->setKeywords($keywords)
            ->addKeyword($keyword)
            ->addMeta($meta, $value);

// Obtendo os dados
SEOMeta::getTitle();
SEOMeta::getTitleSession();
SEOMeta::getTitleSeperator();
SEOMeta::getKeywords();
SEOMeta::getDescription();
SEOMeta::reset();

SEOMeta::generate();
API (Open Graph)
OpenGraph::addProperty($key, $value); // valor pode ser uma string ou array
OpenGraph::addImage($url); // adiciona url da imagem
OpenGraph::addImages($url); // adiciona uma array de urls de imagens
OpenGraph::setTitle($title); // define o título
OpenGraph::setDescription($description);  // define a descrição
OpenGraph::setUrl($url); // define a url
OpenGraph::setSiteName($name); //define site_name

// Você pode usar métodos em cadeia
OpenGraph::addProperty($key, $value)
            ->addImage($url)
            ->addImages($url)
            ->setTitle($title)
            ->setDescription($description)
            ->setUrl($url)
            ->setSiteName($name);

// Gerar tags html
OpenGraph::generate();
API (Twitter Card)
Twitter::addValue($key, $value); // valor pode ser uma string ou array
Twitter::setType($type); // tipo da tag do Twitter Card
Twitter::setTitle($type); // título da tag do Twitter Card
Twitter::setSite($type); // site da tag do Twitter Card
Twitter::setDescription($type); // descrição da tag do Twitter Card
Twitter::setUrl($type); // url da tag do Twitter Card
Twitter::addImage($url); // adiciona a url da imagem
Twitter::addImages($url); // adiciona uma array de urls de imagens

// Você pode usar métodos em cadeia
Twitter::addValue($key, $value)
            ->setType($type)
            ->addImage($url)
            ->addImages($url)
            ->setTitle($title)
            ->setDescription($description)
            ->setUrl($url)
            ->setSite($name);

// Gerar tags html
Twitter::generate();
API (SEO)

Facilita o acesso a todos os SEO Providers

SEO::metatags();
SEO::twitter();
SEO::opengraph();

SEO::setTitle($title);
SEO::setDescription($description);

About

SEO Tools for Laravel

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%