Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Nova Page Builder Laravel Package

creode/nova-page-builder

A Laravel Nova package that adds a flexible page builder to your admin panel. Compose pages from reusable, configurable content blocks and manage structured content without writing custom code. Ideal for marketing sites, landing pages and CMS-driven Nova applications.

View on GitHub
Deep Wiki
Context7

Getting Started

  • Install with composer require creode-modules/nova-page-builder, then publish and run the package migrations (php artisan vendor:publish --tag=... followed by php artisan migrate). The layouts table is the backbone of everything else, so confirm it exists before touching Nova.
  • Look first at the package's config file (if published) and its Nova resource for layouts — that resource is where titles, field definitions, and ordering live. Read the Layout model next; its relationships tell you how layouts attach to your content models.
  • The fastest first use case: create a layout record with a title (e.g. "Hero Banner"), define its fields/blocks, then attach it to a page model and render it in a Blade view. Getting one layout from Nova admin → database → frontend output validates the whole pipeline before you build out a library of blocks.
  • In 1.6.0 specifically, layout listings can now be sorted by title. If your admin users have been hunting through an unsorted list, set the default sort on the layouts resource to title ascending and the immediate win is a browsable, alphabetical layout index.

Implementation Patterns

  • Reusable layout library over per-page definitions. Define a modest set of layouts (hero, rich text, two-column, CTA) and let editors compose pages from them. This keeps frontend Blade partials 1:1 with layout records and makes the rendering layer trivial to reason about.
  • Title-sorted indexes as the default admin experience. Since 1.6.0 adds title sorting, wire it into the Nova resource's default ordering rather than leaving it as a clickable column header. Editors who open the layout index dozens of times a day benefit from a stable, predictable order far more than from a manual sort they have to re-apply.
  • Naming conventions that survive alphabetical sorting. Because title sort is lexical, adopt prefixes like 01 - Hero, 02 - Content, 03 - CTA (or group names such as Home: Hero) if editorial order matters to you. Treat the title as both a label and a lightweight ordering mechanism.
  • Seed your layouts. Layout definitions are configuration as much as content. Ship them in seeders so staging, CI, and fresh local environments all have the same block library, and the title sort produces identical ordering everywhere.
  • Render through a single resolver. Instead of scattering @switch statements across views, resolve each layout to a Blade partial via a naming convention or a small registry class. When you add a layout in 1.6.x-era code, you register it in one place.
  • Eager load aggressively. Layouts typically fan out to field values and nested blocks. Use with() on the relationship when loading a page for rendering, and consider caching the resolved layout payload per page if the frontend is read-heavy.

Gotchas and Tips

  • 1.6.0 is additive and non-breaking. The only change is title-based sorting of layouts (PR #10). Upgrading from 1.5.0 requires no migration or code changes, but do run your test suite if you have assertions on layout index ordering — a sortable title column can change default result order if you adopt it.
  • Lexical vs. numeric sorting. Title sort is a string comparison, so Layout 10 lands before Layout 2. If your titles contain numbers without zero-padding, the ordering will look wrong to editors and they will file a bug. Zero-pad or prefix.
  • Duplicate titles are a real hazard. Sorting by title makes near-duplicate titles ("Hero", "Hero ", "hero") visually adjacent and obviously wrong — but only if you notice. Add a unique constraint or validation rule on title if the package doesn't already enforce one.
  • Cache clearing after config or layout changes. If you cache resolved layouts or compiled views, changing a layout's fields in Nova won't be reflected until the cache is cleared. Make this explicit in your deploy/runbook; it is the single most common "the page builder is broken" false alarm.
  • Debugging rendering issues starts at the data layer. When a block renders blank, check in this order: does the layout record exist, is it attached to the page, are the field values populated, and only then the Blade partial. The Nova admin will happily let you save an empty layout.
  • Extension point to watch: the sorting change suggests layout index presentation is being actively iterated. If you need custom ordering beyond title (drag-and-drop, per-site), that is the area most likely to gain first-party support in future releases — check the changelog before building it yourself, and keep any custom ordering logic isolated so it's easy to swap out.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource
noith/settings