PHPackages                             creode/nova-page-builder - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Templating &amp; Views](/categories/templating)
4. /
5. creode/nova-page-builder

ActiveLibrary[Templating &amp; Views](/categories/templating)

creode/nova-page-builder
========================

Exposes a simple customisable page builder in Laravel Nova, built on top of Flexible Content fields.

1.6.0(1y ago)0791[1 PRs](https://github.com/creode-modules/nova-page-builder/pulls)5MITPHPPHP ^8.1

Since Jan 24Pushed 1y ago1 watchersCompare

[ Source](https://github.com/creode-modules/nova-page-builder)[ Packagist](https://packagist.org/packages/creode/nova-page-builder)[ Docs](https://github.com/creode/nova-page-builder)[ GitHub Sponsors](https://github.com/Creode)[ RSS](/packages/creode-nova-page-builder/feed)WikiDiscussions 1.x Synced 1mo ago

READMEChangelog (8)Dependencies (9)Versions (13)Used By (5)

Nova Page Builder
=================

[](#nova-page-builder)

[![Latest Version on Packagist](https://camo.githubusercontent.com/5b619d37276a578e556a352459a4e6803ae63307700349e15f23ec4b807721f6/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6372656f64652f6e6f76612d706167652d6275696c6465722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/creode/nova-page-builder)[![Total Downloads](https://camo.githubusercontent.com/332e542babfaa5b19a75d56b2bb6a275397c45c42094b8c374e9a748a0fa1a91/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6372656f64652f6e6f76612d706167652d6275696c6465722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/creode/nova-page-builder)

Exposes a simple customisable page builder in Laravel Nova, built on top of Flexible Content fields.

Installation
------------

[](#installation)

You can install the package via composer:

```
composer require creode/nova-page-builder
```

Optionally, you can publish the views using

```
php artisan vendor:publish --tag="nova-page-builder-views"
```

Usage
-----

[](#usage)

This package is split from a previous module titled `nova-pages`. That module exposed page builder functionality where new components could be created easily. This module splits the page builder functionality from the page management functionality, allowing you to use the page builder without the page management.

This module heavily utilises the [nova-flexible-content](https://github.com/whitecube/nova-flexible-content) package, and as such, you should familiarise yourself with that package before using this one.

### Page Builder Field

[](#page-builder-field)

This module creates a new field type, `Creode\NovaPageBuilder\Nova\Fields\PageBuilder`. This field type is a wrapper around the `Flexible` field type, and as such, you can use all of the same methods as you would with the `Flexible` field type. The only difference is that the `PageBuilder` field type will automatically register all of the components that you have created.

### Excluding Components

[](#excluding-components)

If you wish to exclude certain components from being used within the field, you can do so by passing an array of component names to the `exclude` method on the `PageBuilder` field type. For example, if you wish to exclude the `Banner` component, you can do so by adding the following to your `Page` Nova resource:

```
public function fields(Request $request)
{
    return [
        // ...
        PageBuilder::make('Content')
            ->exclude(['banner']),
    ];
}
```

### Rendering Components

[](#rendering-components)

This module exposes a blade file that can be used to render the components on the front-end of your site.

We also include a trait that needs to be added to your model. This trait will allow you to access the content of the page builder field and allow you to pass the components to the blade file. The trait is `Creode\NovaPageBuilder\Traits\HasPageBuilderContent`. You can use this trait in your model like so:

```
use Creode\NovaPageBuilder\Traits\HasComponents;

class Page extends Model
{
    use HasPageBuilderContent;

    /**
     * The name of your page builder field.
     */
    protected $componentField = 'content';
}
```

Once the above has been added to your model you can render the components of the page builder field by calling `$page->components` and passing this to the view file below:

For example:

```
@include('page-builder::components', ['components' => $page->components])
```

### Extension

[](#extension)

As previously stated, this module will not define any format of page content. However it does contain the infrastructure for defining content blocks with minimal code. To define a new content block you will need to define an extension of the `Creode\NovaPageBuilder\Abstracts\PageBlockAbstract` class. Your new class should then be instantiated within the boot method of a service provider.

As part of your new class, you must define a "$label" string property. This will be the human readable representation of your new content block. You must define a "$name" string property. This will be how Laravel will reference your content block. You must define a "$view" string property. This should reference a view file containing markup and/or template logic for rendering your block on front-end pages. You must define a "fields" method. This should return an array of Laravel Nova field objects.

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](CONTRIBUTING.md) for details.

Security Vulnerabilities
------------------------

[](#security-vulnerabilities)

Please review [our security policy](../../security/policy) on how to report security vulnerabilities.

Credits
-------

[](#credits)

- [Creode](https://github.com/creode)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

32

—

LowBetter than 72% of packages

Maintenance38

Infrequent updates — may be unmaintained

Popularity10

Limited adoption so far

Community18

Small or concentrated contributor base

Maturity57

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 78.8% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~39 days

Recently: every ~76 days

Total

9

Last Release

531d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/8133041?v=4)[Creode](/maintainers/creode)[@creode](https://github.com/creode)

---

Top Contributors

[![jaymeh](https://avatars.githubusercontent.com/u/18261676?v=4)](https://github.com/jaymeh "jaymeh (26 commits)")[![creode-dev](https://avatars.githubusercontent.com/u/19706903?v=4)](https://github.com/creode-dev "creode-dev (5 commits)")[![liam-spedding](https://avatars.githubusercontent.com/u/111750536?v=4)](https://github.com/liam-spedding "liam-spedding (2 commits)")

---

Tags

laravelcreodenova-page-builder

###  Code Quality

TestsPest

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/creode-nova-page-builder/health.svg)

```
[![Health](https://phpackages.com/badges/creode-nova-page-builder/health.svg)](https://phpackages.com/packages/creode-nova-page-builder)
```

###  Alternatives

[ryangjchandler/blade-capture-directive

Create inline partials in your Blade templates with ease.

8222.2M12](/packages/ryangjchandler-blade-capture-directive)[spatie/laravel-blade-comments

Add debug comments to your rendered output

177325.5k](/packages/spatie-laravel-blade-comments)[vormkracht10/laravel-mails

Laravel Mails can collect everything you might want to track about the mails that has been sent by your Laravel app.

24149.7k](/packages/vormkracht10-laravel-mails)[daikazu/laravel-glider

Start using Glide on-the-fly instantly in your Laravel blade templates.

882.3k](/packages/daikazu-laravel-glider)[combindma/dash-ui

A streamlined and stylish UI component library for Laravel Blade, crafted with TailwindCSS and AlpineJs for simplicity and elegance.

631.4k](/packages/combindma-dash-ui)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
