Seo data is stored in the database in the seo
table and
is linked to pages based on the url, the url is unique for websites, therefore, the seo in this package is built from it
- Easy to use
- Not tied to entities
- All data is cached relative to url and reset by events on the model
composer require lee-to/laravel-seo-by-url
Publish config
php artisan vendor:publish --provider="Leeto\Seo\Providers\SeoServiceProvider"
if you use the MoonShine, then publish the resource with this command
php artisan seo:moonshine
For starters, you can choose the best usage approach for you:
- Facade
use Leeto\Seo\Seo;
// ...
Seo::title('Hello world')
- Helper
seo()->title('Hello world')
- DI
use Leeto\Seo\SeoManager;
// ...
public function __invoke(SeoManager $seo)
{
//
}
- Ok I prefer to use the helper
title, descriptions, keywords, og
<html>
<head>
<!-- // .. -->
@seo
<!-- // .. -->
</head>
<div>
@seoText('Default text')
</div>
- set
seo()->title('Im page title')
- set and save in database
seo()->title('Im page title', true)
- other tags
seo()->description('Im page description')
seo()->keywords('Im page description')
seo()->text('Im page description')
seo()->og(['image' => 'link to image'])
- get value
seo()->meta()->title()
seo()->meta()->description()
seo()->meta()->keywords()
seo()->meta()->text()
seo()->meta()->og()
- get html tags
seo()->meta()->html()
- save by model
use Leeto\Seo\Models\Seo;
Seo::create([
'url' => '/',
'title' => 'Im title'
]);
Set in seo config config/seo.php
return [
'default' => [
'title' => 'Im title'
]
]);