lee-to/laravel-seo-by-url is a Laravel package for easy seo for laravel and moonshine.
It currently has 23 GitHub stars and 10.664 downloads on Packagist (latest version 2.0.0).
Install it with composer require lee-to/laravel-seo-by-url.
Discover more Laravel packages by lee-to
or browse all Laravel packages to compare alternatives.
Last updated
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
composer require lee-to/laravel-seo-by-url
Publish config
php artisan vendor:publish --provider="Leeto\Seo\Providers\SeoServiceProvider"
php artisan migrate
We've recorded a video on how to use this package. It's the best way to get started using media library
if you use the MoonShine, then publish the resource with this command
#for version 4+
php artisan seo:moonshine
#for version 3
php artisan seo:moonshine_old
For starters, you can choose the best usage approach for you:
use Leeto\Seo\Seo;
// ...
Seo::title('Hello world')
seo()->title('Hello world')
use Leeto\Seo\SeoManager;
// ...
public function __invoke(SeoManager $seo)
{
//
}
title, descriptions, keywords, og
<html>
<head>
<!-- // ... -->
@seo
<!-- // ... -->
</head>
<div>
@seoText('Default text')
</div>
seo()->title('Im page title')
seo()->title('Im page title', true)
seo()->description('Im page description')
seo()->keywords('Im page description')
seo()->text('Im page description')
seo()->og(['image' => 'link to image'])
seo()->meta()->title()
seo()->meta()->description()
seo()->meta()->keywords()
seo()->meta()->text()
seo()->meta()->og()
seo()->meta()->html()
use Leeto\Seo\Models\Seo;
Seo::create([
'url' => '/',
'title' => 'Im title'
]);
Set in seo config config/seo.php
return [
'default' => [
'title' => 'Im title'
]
]);
Use Shared Data
class HandleInertiaRequests extends Middleware
{
//
public function share(Request $request)
{
return array_merge(parent::share($request), [
// ...
'seo' => [
'title' => seo()->meta()->title(),
'description' => seo()->meta()->description(),
'keywords' => seo()->meta()->keywords(),
'og' => seo()->meta()->og(),
'text' => seo()->meta()->text(),
]
]);
}
//
}
import { Head } from '@inertiajs/vue3'
<Head>
<title>{{ $page.props.seo.title }}</title>
<meta name="description" :content="$page.props.seo.description">
</Head>