-
Notifications
You must be signed in to change notification settings - Fork 0
Configuration
Everything lives in config/atelier.php, published with:
php artisan vendor:publish --tag=filament-atelier-configEvery key has a working default, so publishing the config is optional until you want to change something. Republishing after an upgrade never overwrites your file, which means new keys fall back to their packaged defaults rather than appearing in your copy.
| Key | Default | What it does |
|---|---|---|
locales |
en, ar
|
Which languages exist. The first is the default and has no URL prefix. |
layout |
atelier::layouts.site |
The Blade layout wrapping rendered blocks, used when a page names none. |
tokens |
[] |
Design token overrides, merged over the shipped set. |
preview.debounce |
500 |
Milliseconds after typing stops before the preview refreshes. |
preview.link_expiry_minutes |
1440 |
How long a shareable preview link stays valid. |
preview.widths |
null, 820, 390
|
Pixel widths for the desktop, tablet and mobile switcher. |
media.disk |
public |
Disk for uploads. Must be publicly readable. |
media.directory |
atelier |
Folder within that disk. |
revisions.keep |
20 |
Snapshots kept per page, pruned on every publish. |
robots.disallow_panel |
/admin |
Panel path to disallow in robots.txt. null leaves it crawlable. |
'locales' => [
'en' => ['label' => 'English', 'dir' => 'ltr'],
'ar' => ['label' => 'العربية', 'dir' => 'rtl'],
],Order matters: the first entry is the default locale and lives at /{slug} with no prefix,
the editor opens on it, and a missing translation falls back to it. label is what the
language switcher shows, and dir is ltr or rtl and drives the html dir attribute
plus the RTL font swap.
The set is yours: one locale, four, in any language. The two shipped are a starting point.
Swapping the order is how you change which language is the default. Put the second entry
first and it serves from /{slug} while the old default moves to /{locale}/{slug}, with
nothing else to change. On a site that already has pages that rewrites every URL and writes no redirects,
because the slugs themselves did not change. See
Multi-language and RTL.
The site-wide shell. Point it at your own Blade view to give a client site its own
navigation and footer, and include atelier::partials.meta and atelier::partials.tokens
in it or you silently lose the head and every design token.
For several shells with a per-page choice, register them instead. See Layouts.
Overrides merge group key by group key over Safi\Atelier\Tokens::defaults():
'tokens' => [
'color' => ['primary' => '#0f766e'],
'font' => ['arabic' => '"IBM Plex Sans Arabic", sans-serif'],
],Anything omitted keeps its shipped value. See Design tokens.
How long the editor waits after the last keystroke before refreshing the iframe. Lower feels more immediate and costs a render per keystroke burst; higher feels laggy. 500ms is the tuned value, and a twelve-section page renders in about 16ms, so the render is not what you are trading against.
'widths' => [
'desktop' => null, // null means unconstrained
'tablet' => 820,
'mobile' => 390,
],Fixed pixel widths, not percentages of the pane, so "mobile" means the same thing on your laptop and your external monitor.
Must be publicly readable. With the default public disk you also need:
php artisan storage:linkWithout the symlink every image in the builder and on the live site is broken, with nothing in the log to say why.
On S3, make sure objects are publicly readable. Atelier uploads with public visibility, so a bucket policy that blocks public reads gives you working uploads and 403ing images.
Snapshots kept per page, pruned on every publish. Set it to 0 or a negative number to
disable pruning entirely and keep everything, which is fine for a site that publishes
occasionally and a growing table for one that does not.
See Publishing.
The panel path written into /robots.txt as a Disallow: line. Set it to your actual panel
path if it is not /admin, or null to leave the panel crawlable.
public/robots.txt, and a file on disk is served before any route
runs, so this only takes effect once you delete that file. See SEO.
Three things are registered in your panel provider rather than the config file, because they are code:
AtelierPlugin::make()
->blocks(DefaultBlocks::all()) // block types
->layouts([...]) // shells a page can pick
->sitemap([...]); // URLs from outside Atelier- Blocks, the section types the client can add
- Layouts, the shells wrapped around them
- SEO, extra sitemap URLs from your own models
Settings → Site details in the panel holds the organisation behind the site: its name, logo, social profiles, address, opening hours and contact points. That is client-owned data which changes without a deploy, so it lives in the database rather than in a file. It feeds the structured data on every page. See Structured data.
php artisan vendor:publish --tag=filament-atelier-viewsCopies every package Blade view into resources/views/vendor/atelier/, where your edits
override the shipped ones. Useful for changing what a shipped block renders, and a fork you
then maintain against every upgrade, so prefer writing your own block.
Rebuild your CSS afterwards: published views live in your app, so the @source line
pointing at the vendor directory no longer covers them.
Building
Running a site
Reference