Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lee-to/laravel-seo-by-url
Seo manager for Laravel 9+
https://github.com/lee-to/laravel-seo-by-url
laravel moonshine seo
Last synced: about 1 month ago
JSON representation
Seo manager for Laravel 9+
- Host: GitHub
- URL: https://github.com/lee-to/laravel-seo-by-url
- Owner: lee-to
- License: mit
- Created: 2023-01-21T07:55:53.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2024-07-08T07:53:44.000Z (6 months ago)
- Last Synced: 2024-10-08T15:10:44.717Z (2 months ago)
- Topics: laravel, moonshine, seo
- Language: PHP
- Homepage: https://cutcode.dev
- Size: 36.1 KB
- Stars: 15
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
### Prolog
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### Installation
```shell
composer require lee-to/laravel-seo-by-url
```
Publish config```shell
php artisan vendor:publish --provider="Leeto\Seo\Providers\SeoServiceProvider"
``````shell
php artisan migrate
```### Are you a visual learner?
We've recorded a [video](https://youtu.be/QjTsC1QF0co) on how to use this package. It's the best way to get started using media library
### MoonShine
if you use the [MoonShine](https://moonshine-laravel.com), then publish the resource with this command
```shell
php artisan seo:moonshine
```### Get started
For starters, you can choose the best usage approach for you:
- Facade
```php
use Leeto\Seo\Seo;// ...
Seo::title('Hello world')
```- Helper
```php
seo()->title('Hello world')
```- DI
```php
use Leeto\Seo\SeoManager;// ...
public function __invoke(SeoManager $seo)
{
//
}
```* Ok I prefer to use the helper
### Blade directives
#### Render meta tags
title, descriptions, keywords, og```html
@seo
```
#### Render seo text
```html
@seoText('Default text')
```### Set and save seo data
- set
```php
seo()->title('Im page title')
```- set and save in database
```php
seo()->title('Im page title', true)
```- other tags
```php
seo()->description('Im page description')
seo()->keywords('Im page description')
seo()->text('Im page description')
seo()->og(['image' => 'link to image'])
```- get value
```php
seo()->meta()->title()
seo()->meta()->description()
seo()->meta()->keywords()
seo()->meta()->text()
seo()->meta()->og()
```- get html tags
```php
seo()->meta()->html()
```- save by model
```php
use Leeto\Seo\Models\Seo;Seo::create([
'url' => '/',
'title' => 'Im title'
]);
```### Default values
Set in seo config `config/seo.php`
```php
return [
'default' => [
'title' => 'Im title'
]
]);
```### Inertia
Use Shared Data
```php
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(),
]
]);
}
//
}
``````js
import { Head } from '@inertiajs/vue3'{{ $page.props.seo.title }}
```