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>
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید