PHP code example of ramir1 / laravel-xseo
1. Go to this page and download the library: Download ramir1/laravel-xseo library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
ramir1 / laravel-xseo example snippets
use Ramir\Xseo\Facades\Xseo;
Xseo::rule('default', fn () => [
'og:type' => 'website',
'og:site_name' => config('app.name'),
]);
Xseo::rule('posts.show', function ($xseo, $post) {
return [
'title' => $post->title,
'description' => $post->excerpt,
'canonical' => route('posts.show', $post->slug),
];
});
Xseo::rule('posts.index', PostsIndexRule::class); // class-string, resolved lazily on first use
Xseo::create('posts.show', $post);
Xseo::rule('posts.show', function ($xseo, $post) {
return array_merge($xseo->parent('posts.index'), [
'title' => $post->title,
]);
});
Xseo::createOnly('standalone-embed', $widget);
// config/xseo.php
'rules' => [
'posts.show' => \App\Xseo\PostsShowRule::class,
'posts.index' => [\App\Xseo\PostsRules::class, 'index'],
'legal.terms' => ['title' => 'Terms of Service', 'description' => '...'],
],
use Ramir\Xseo\Contracts\XseoRule;
use Ramir\Xseo\XseoManager;
class PostsShowRule implements XseoRule
{
public function handle(XseoManager $xseo, mixed ...$params): array
{
[$post] = $params;
return ['title' => $post->title, 'canonical' => route('posts.show', $post->slug)];
}
}
// inside your package's service provider
Xseo::ruleRegister('blog.index', BlogIndexRule::class);
// config/xseo.php — overrides the package's 'blog.index' rule
'rules' => [
'blog.index' => \App\Xseo\CustomBlogRule::class,
],
// config/xseo.php
'defaults' => [
'og:type' => 'website',
'og:site_name' => config('app.name'),
],
// config/xseo.php
'defaults_class' => \App\Xseo\ComputedDefaultsRule::class,
Xseo::create([PostsShowRule::class, 'show'], $post); // [Class::class, 'method']
Xseo::create(fn ($xseo, $post) => ['title' => $post->title], $post); // Closure
Xseo::create(['title' => 'Terms of Service']); // static array
use Ramir\Xseo\Facades\Xseo;
class PageController
{
public function show(string $slug): View
{
$page = Page::where('slug', $slug)->firstOrFail();
Xseo::create('posts.show', $page);
return view('pages.show', ['page' => $page]);
}
}
use App\Xseo\PostsShowRule;
use Ramir\Xseo\Facades\Xseo;
class PageController
{
public function show(string $slug): View
{
$page = Page::where('slug', $slug)->firstOrFail();
Xseo::create([PostsShowRule::class, 'show'], $page);
return view('pages.show', ['page' => $page]);
}
}
'copy' => [
'title' => ['og:title', 'twitter:title'],
'description' => ['og:description', 'twitter:description'],
'canonical' => ['og:url'],
],
Xseo::exclude('title')->generate();
Xseo::exclude(['title', 'og:title'])->generate();
Xseo::exclude('title')->exclude('canonical')->generate(); // accumulates
bash
php artisan vendor:publish --tag=xseo-config
bash
php artisan vendor:publish --tag=xseo-views
blade
<head>
{!! \Ramir\Xseo\Facades\Xseo::generate() !!}
</head>
bash
docker compose run --rm php composer install
docker compose run --rm php vendor/bin/pest
docker compose run --rm php vendor/bin/pint --test
docker compose run --rm php vendor/bin/phpstan analyse --memory-limit=512M