1. Go to this page and download the library: Download zoker/filament-multisite 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/ */
zoker / filament-multisite example snippets
use Zoker\FilamentMultisite\Multisite;
// In your Filament panel definition
->plugin(Multisite::make())
use Illuminate\Support\Facades\Route;
Route::multisite(function () {
// These routes will be available for all sites
Route::get('/', [HomeController::class, 'index'])->name('home');
// Add more site‑specific routes here
});
use Zoker\FilamentMultisite\Facades\SiteManager;
// Get current site
$currentSite = SiteManager::getCurrentSite();
// Set current site by ID
SiteManager::setCurrentSiteById(1);
// Set current site by request
SiteManager::setCurrentSiteByRequest($request);
// Get current site
$site = currentSite();
use Illuminate\Support\Facades\Route;
use Zoker\FilamentMultisite\Http\Middleware\MultisiteMiddleware;
Route::middleware([MultisiteMiddleware::class])->group(function () {
// Your routes here
});
use Zoker\FilamentMultisite\Filament\Actions\SiteSwitcher;
public function getActions(): array
{
return [
SiteSwitcher::make(),
];
}
use Illuminate\Database\Eloquent\Model;
use Spatie\Translatable\HasTranslations;
class YourModel extends Model
{
use HasTranslations;
/** @var array<int, string> */
public array $translatable = ['attribute'];
}
## Per‑site models: `HasMultisite`
To store separate content per site, add the `HasMultisite` trait to your model:
use Filament\Resources\Resource;
use Zoker\FilamentMultisite\Traits\HasMultisiteResource;
class YourResource extends Resource
{
use HasMultisiteResource;
}
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use Zoker\FilamentMultisite\Models\Site;
Schema::table('your_table', function (Blueprint $table) {
$table->foreignIdFor(Site::class)->constrained()->cascadeOnDelete();
});
use Zoker\FilamentMultisite\Services\AlternateLinks;
// Set alternate links in your controller
public function show(Category $category)
{
$links = [];
foreach ($sites as $site) {
$links[] = [
'site' => $site,
'url' => localized_url_for_site($site),
];
}
AlternateLinks::set($links);
return view('category.show', compact('category'));
}
// Set a custom canonical URL (overrides config)
AlternateLinks::setCanonicalUrl('https://example.com/custom-url');
// Get the current canonical URL
$canonicalUrl = AlternateLinks::getCanonicalUrl();