معرفی ابزار SEO برای لاراول

ترجمه و تالیف : امیررضا سیستانه ای
تاریخ انتشار : 13 خرداد 98
خواندن در 3 دقیقه
دسته بندی ها : لاراول

SEOTools یک پکیج برای +5 Laravel و Lumen هست که یکسری کمکی برای تکنیک های معمول SEO فراهم میکنه.

ویژگی ها

  • رابط کاربری مناسب
  • راحتی در قرار دادن عناوین و meta tag ها
  • راحتی در قرار دادن meta برای توئیتر و opengraph

نصب

1 - وابستگی ها

اولین قدم استفاده از کامپوزر برای نصب پکیج و آپدیت خودکار فایل composer.json هست. شما میتونید این کار رو با اجرای دستور زیر انجام بدید :

composer require artesaos/seotools

2 - Provider و Facade

شما باید پیکربندی اپلیکیشن تون رو به روز کنید تا پکیج ثبت بشه. فایل config/app.php رو باز کرده و کد زیر رو پایین بخش providers قرار بدید :

// file START ommited

    'providers' => [

        // other providers ommited

        Artesaos\SEOTools\Providers\SEOToolsServiceProvider::class,

    ],

// file END ommited

برای استفاده از SEOMeta facade هم باید در فایل config/app.php به صورت زیر تغییرات رو انجام بدید :

// file START ommited

    'aliases' => [

        // other Facades ommited

        'SEOMeta'   => Artesaos\SEOTools\Facades\SEOMeta::class,

        'OpenGraph' => Artesaos\SEOTools\Facades\OpenGraph::class,

        'Twitter'   => Artesaos\SEOTools\Facades\TwitterCard::class,

        // or

        'SEO' => Artesaos\SEOTools\Facades\SEOTools::class,

    ],

// file END ommited

پیکربندی

انتشار فایل پیکربندی

در ترمینال خود دستور زیر رو اجرا کنید :

php artisan vendor:publish

و یا میتونید از این دستور استفاده کنید :

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

در فایل پیکربندی seotools.php شما میتونید پراپرتی های پیشفرض رو ملاحظه کنید و مقادیرش رو بصورت دلخواه تغییر بدید.

فایل seotools.php 

  • meta
  • defaults - اگر مقداری برای صفحه ی نمایشی تعیین نشد, چه مقداری باید نمایش داده بشه. اگر مقدارش false باشه هیچ چیزی نمایش داده نمیشه.
  • webmaster - تنظیمات مقادیر تگ ها برای ابزارهای وب مستر بزرگ هست. اگر null قرار بدید هیچ چیزی نمایش داده نمیشه.
  • opengraph
  • defaults - پراپرتی هایی که همیشه و هرگاه مقداری دیگری تنظیم نشده باشد, نمایش داده می شوند. شما میتونید تگ های اضافه بیافزایید که در فایل پیکربندی اورجینال وجود ندارند.

نحوه استفاده

نحوه استفاده در Lumen

$seotools = app('seotools');

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

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

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



// The behavior is the same as the facade

// --------



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

  • با استفاده از SEOMeta میتونید تگ های meta به head اضافه کنید.
  • با استفاده از OpenGraph میتونید تگ های opengraph به head اضافه کنید.
  • با استفاده از Twitter هم میتونید تگ های opengraph رو به head بیافزایید.

در قسمت کنترلر :


use SEOMeta;

use OpenGraph;

use Twitter;

## or

use SEO;


class CommomController extends Controller

{

    /**

     * @return \Illuminate\View\View

     */

    public function index()

    {

        SEOMeta::setTitle('Home');

        SEOMeta::setDescription('This is my page description');

        SEOMeta::setCanonical('https://codecasts.com.br/lesson');



        OpenGraph::setDescription('This is my page description');

        OpenGraph::setTitle('Home');

        OpenGraph::setUrl('http://current.url.com');

        OpenGraph::addProperty('type', 'articles');



        Twitter::setTitle('Homepage');

        Twitter::setSite('@LuizVinicius73');



        ## Or



        SEO::setTitle('Home');

        SEO::setDescription('This is my page description');

        SEO::opengraph()->setUrl('http://current.url.com');

        SEO::setCanonical('https://codecasts.com.br/lesson');

        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]);

        OpenGraph::addImage('http://image.url.com/cover.jpg', ['height' => 300, 'width' => 300]);



        // Namespace URI: http://ogp.me/ns/article#

        // article

        OpenGraph::setTitle('Article')

            ->setDescription('Some Article')

            ->setType('article')

            ->setArticle([

                'published_time' => 'datetime',

                'modified_time' => 'datetime',

                'expiration_time' => 'datetime',

                'author' => 'profile / array',

                'section' => 'string',

                'tag' => 'string / array'

            ]);



        // Namespace URI: http://ogp.me/ns/book#

        // book

        OpenGraph::setTitle('Book')

            ->setDescription('Some Book')

            ->setType('book')

            ->setBook([

                'author' => 'profile / array',

                'isbn' => 'string',

                'release_date' => 'datetime',

                'tag' => 'string / array'

            ]);



        // Namespace URI: http://ogp.me/ns/profile#

        // profile

        OpenGraph::setTitle('Profile')

             ->setDescription('Some Person')

            ->setType('profile')

            ->setProfile([

                'first_name' => 'string',

                'last_name' => 'string',

                'username' => 'string',

                'gender' => 'enum(male, female)'

            ]);



        // Namespace URI: http://ogp.me/ns/music#

        // music.song

        OpenGraph::setType('music.song')

            ->setMusicSong([

                'duration' => 'integer',

                'album' => 'array',

                'album:disc' => 'integer',

                'album:track' => 'integer',

                'musician' => 'array'

            ]);



        // music.album

        OpenGraph::setType('music.album')

            ->setMusicAlbum([

                'song' => 'music.song',

                'song:disc' => 'integer',

                'song:track' => 'integer',

                'musician' => 'profile',

                'release_date' => 'datetime'

            ]);



         //music.playlist

        OpenGraph::setType('music.playlist')

            ->setMusicPlaylist([

                'song' => 'music.song',

                'song:disc' => 'integer',

                'song:track' => 'integer',

                'creator' => 'profile'

            ]);



        // music.radio_station

        OpenGraph::setType('music.radio_station')

            ->setMusicRadioStation([

                'creator' => 'profile'

            ]);



        // Namespace URI: http://ogp.me/ns/video#

        // video.movie

        OpenGraph::setType('video.movie')

            ->setVideoMovie([

                'actor' => 'profile / array',

                'actor:role' => 'string',

                'director' => 'profile /array',

                'writer' => 'profile / array',

                'duration' => 'integer',

                'release_date' => 'datetime',

SEOTrait 

use Artesaos\SEOTools\Traits\SEOTools as SEOToolsTrait;


class CommomController extends Controller

{

    use SEOToolsTrait;



    /**

     * @return \Illuminate\View\View

     */

    public function index()

    {

        $this->seo()->setTitle('Home');

        $this->seo()->setDescription('This is my page description');

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

    }

}

در قسمت View 

نکته : برای کاهش سایر فایل و استفاده از نسخه minified میتونید پارامتر رو true بدهید :


<html>

<head>

{!! SEOMeta::generate() !!}

{!! OpenGraph::generate() !!}

{!! Twitter::generate() !!}

    <!-- OR -->

{!! SEO::generate() !!}


  <!-- MINIFIED -->

{!! SEO::generate(true) !!}


    <!-- LUMEN -->

{!! app('seotools')->generate() !!}

</head>

<body>

</body>

</html>

مشاهده مستندات کامل

دیدگاه‌ها و پرسش‌ها

برای ارسال نظر لازم است ابتدا وارد سایت شوید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید