PHP code example of dominion-solutions / filament-seo

1. Go to this page and download the library: Download dominion-solutions/filament-seo 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/ */

    

dominion-solutions / filament-seo example snippets


use DominionSolutions\FilamentSeo\FilamentSeoPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            FilamentSeoPlugin::make(),
        ]);
}

use DominionSolutions\FilamentSeo\Concerns\InteractsWithSeo;
use DominionSolutions\FilamentSeo\Contracts\HasSeo;
use Illuminate\Database\Eloquent\Model;

class Product extends Model implements HasSeo
{
    use InteractsWithSeo;
}

use DominionSolutions\FilamentSeo\Support\Text;

protected function getSeoFallbackTitle(): ?string
{
    return $this->name;
}

protected function getSeoFallbackDescription(): ?string
{
    return Text::excerpt($this->tagline);
}

protected function getSeoFallbackImageUrl(): ?string
{
    return $this->screenshot_url;
}

use DominionSolutions\FilamentSeo\Schemas\SeoSchema;
use Filament\Schemas\Schema;

public static function form(Schema $schema): Schema
{
    return $schema->components([
        // ...
        SeoSchema::make(),
    ]);
}

use DominionSolutions\FilamentSeo\Filament\Concerns\CreatesSeoMetadata;
use DominionSolutions\FilamentSeo\Filament\Concerns\UpdatesSeoMetadata;
use Filament\Resources\Pages\CreateRecord;
use Filament\Resources\Pages\EditRecord;

class CreateProduct extends CreateRecord
{
    use CreatesSeoMetadata;
}

class EditProduct extends EditRecord
{
    use UpdatesSeoMetadata;
}

use DominionSolutions\FilamentSeo\Filament\Concerns\InteractsWithSeoActions;
use DominionSolutions\FilamentSeo\Schemas\SeoSchema;
use Filament\Actions\CreateAction;
use Filament\Resources\RelationManagers\RelationManager;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Model;

class CaseStudiesRelationManager extends RelationManager
{
    use InteractsWithSeoActions;

    // A relation on the owning model; replace with your actual relationship name.
    protected static string $relationship = 'caseStudies';

    public function table(Table $table): Table
    {
        return $table
            ->headerActions([
                CreateAction::make('createCaseStudy')
                    ->form([SeoSchema::make()])
                    ->mutateDataUsing($this->captureSeoFormData(...))
                    ->after(fn (Model $record) => $this->applyPendingSeoFormData($record)),
            ]);
    }
}

use DominionSolutions\FilamentSeo\Concerns\HasSeoMetadata;
use Filament\Pages\Page;

class About extends Page
{
    use HasSeoMetadata;

    protected ?string $heading = '';

    protected static ?string $seoTitle = 'About Us';

    protected static ?string $seoDescription = 'Twenty years of engineering leadership, applied to software small businesses can rely on.';
}

public function getSeoData(): SeoData
{
    return $this->record->getSeoData()->merge([
        'type' => SeoData::TYPE_ARTICLE,
    ]);
}

FilamentSeoPlugin::make()
    ->seoData([
        'siteName' => 'Acme',
        'imageUrl' => asset('images/acme.png'),
    ]);

use DominionSolutions\FilamentSeo\Support\SeoData;

$product->saveSeo(['title' => 'A better title']);

expect($product->fresh()->getSeoData()->title)->toBe('A better title');
bash
php artisan vendor:publish --tag=filament-seo