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,
]);
}
use DominionSolutions\FilamentSeo\Support\SeoData;
$product->saveSeo(['title' => 'A better title']);
expect($product->fresh()->getSeoData()->title)->toBe('A better title');