PHPackages                             yaroslawww/nova-page-settings - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. yaroslawww/nova-page-settings

Abandoned → [think.studio/nova-page-settings](/?search=think.studio%2Fnova-page-settings)Library[Utility &amp; Helpers](/categories/utility)

yaroslawww/nova-page-settings
=============================

Ad hoc solution to add settings configuration to laravel nova

4.4.0(2y ago)0106MITPHPPHP ^8.1

Since Apr 26Pushed 2y ago1 watchersCompare

[ Source](https://github.com/dev-think-one/nova-page-settings)[ Packagist](https://packagist.org/packages/yaroslawww/nova-page-settings)[ Docs](https://github.com/dev-think-one/nova-page-settings)[ RSS](/packages/yaroslawww-nova-page-settings/feed)WikiDiscussions main Synced yesterday

READMEChangelogDependencies (7)Versions (15)Used By (0)

Laravel nova page settings
==========================

[](#laravel-nova-page-settings)

[![Packagist License](https://camo.githubusercontent.com/0b648b442871419f140fcc7dd85d00a57f81b24b3b03c7570a8eacc37bee7664/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f7468696e6b2e73747564696f2f6e6f76612d706167652d73657474696e67733f636f6c6f723d253233346463373166)](https://camo.githubusercontent.com/0b648b442871419f140fcc7dd85d00a57f81b24b3b03c7570a8eacc37bee7664/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f7468696e6b2e73747564696f2f6e6f76612d706167652d73657474696e67733f636f6c6f723d253233346463373166)[![Packagist Version](https://camo.githubusercontent.com/f6472bac5c50fc7f9cc839aa70ac4c5309a89b4d8ada9e249c6929400ff79fa4/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f7468696e6b2e73747564696f2f6e6f76612d706167652d73657474696e6773)](https://packagist.org/packages/think.studio/nova-page-settings)[![Total Downloads](https://camo.githubusercontent.com/688d4b6f07a6b3e9bcd5f2cf03e18b1c3f1378db5c34d29e16931634e2dcdf82/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f7468696e6b2e73747564696f2f6e6f76612d706167652d73657474696e6773)](https://packagist.org/packages/think.studio/nova-page-settings)[![Build Status](https://camo.githubusercontent.com/4071a5145fc26236b8a8b515f2ab6446c400a2b5dfe196e406636768529825fa/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f6465762d7468696e6b2d6f6e652f6e6f76612d706167652d73657474696e67732f6261646765732f6275696c642e706e673f623d6d61696e)](https://scrutinizer-ci.com/g/dev-think-one/nova-page-settings/build-status/main)[![Code Coverage](https://camo.githubusercontent.com/fc9659554c7f8788abc76a1837c75d2ac7b098f8e7f8f7b49e8499e31533ba3c/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f6465762d7468696e6b2d6f6e652f6e6f76612d706167652d73657474696e67732f6261646765732f636f7665726167652e706e673f623d6d61696e)](https://scrutinizer-ci.com/g/dev-think-one/nova-page-settings/?branch=main)[![Scrutinizer Code Quality](https://camo.githubusercontent.com/11dee2ee46976390a3763109e8df9d3f8441bf234ee3f0ed138c850521c85e86/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f6465762d7468696e6b2d6f6e652f6e6f76612d706167652d73657474696e67732f6261646765732f7175616c6974792d73636f72652e706e673f623d6d61696e)](https://scrutinizer-ci.com/g/dev-think-one/nova-page-settings/?branch=main)

Ad hoc solution to add settings configuration to laravel nova.

NovaPackageV1V1, V2V4V3, V4Installation
------------

[](#installation)

You can install the package via composer:

```
composer require think.studio/nova-page-settings
```

Optional publish configs

```
php artisan vendor:publish --provider="ThinkOne\NovaPageSettings\ServiceProvider" --tag="config"
```

Usage
-----

[](#usage)

### Admin part

[](#admin-part)

1. Create settings table (migration)

```
public function up() {
    Schema::create( config('nova-page-settings.default.settings_table'), function ( Blueprint $table ) {
        \Thinkone\NovaPageSettings\MigrationHelper::defaultColumns($table);
    } );
}
```

2. Create resource

```
namespace App\Nova\Resources;

class PageSettingResource extends Resource
{
    use \Thinkone\NovaPageSettings\Nova\Resources\Traits\AsPageSetting;

    public static $model = \Thinkone\NovaPageSettings\Adapters\CMSPageSettingModel::class;

    public static $searchable         = false;
    public static $globallySearchable = false;

    public static $title = \Thinkone\NovaPageSettings\QueryAdapter\InternalSettingsModel::ATTR_NAME;

    public static $perPageOptions = [ 1000 ];

    public static function label()
    {
        return 'Custom settings';
    }

    public static function uriKey()
    {
        return 'custom-page-settings';
    }
}
```

3. Create templates in folder what you specified in step 3. System will find all templates in folder automatically.

```
namespace App\Nova\PageSettings\Templates;

use Laravel\Nova\Fields\Image;
use Laravel\Nova\Fields\Text;
use Laravel\Nova\Fields\Textarea;
use Laravel\Nova\Http\Requests\NovaRequest;
use Thinkone\NovaPageSettings\Templates\BaseTemplate;
use NovaFlexibleContent\Flexible;

class MarketingPageSettings extends BaseTemplate
{
    public function fields(NovaRequest $request)
    {
        return [
            // NOTICE: do not forget use "templateKey" method
            Email::make('Notification email', $this->templateKey('notification_email'));
            Flexible::make('Slider', $this->templateKey('slider'))
                    ->addLayout('Custom Slide', 'custom_slide', [
                        Text::make('Title', 'title'),
                        Textarea::make('Text', 'text'),
                        Text::make('Button Text', 'btn_text'),
                        Text::make('Button Link', 'btn_link'),
                    ])
                    ->limit(4)
                    ->button('Add Slide'),
            // ... other fields
        ];
    }
}
```

4. As a result, you should see something like this:

[![](docs/assets/settings-example.gif)](docs/assets/settings-example.gif)

### Frontend part

[](#frontend-part)

```
 /** @var \Illuminate\Support\PageSettingsCollection $pageSettings */
 $pageSettings = MarketingPageSettings::retrieve();
 // get array of slides using helper
 $slides = $pageSettings->getSettingValue( 'slider', 'array', []);
 // get typed value
 $slides = $pageSettings->arraySettingValue( 'slider', []);
 $slides = $pageSettings->stringSettingValue( 'notification_email');

 // or
 /** @var array $viewData */
 $viewData = MarketingPageSettings::viewData();
 echo $viewData['slider'];
```

Use flexible
------------

[](#use-flexible)

If you need to use flexible content package you will need override default model:

```
namespace App\Models;

class PageSetting extends \Thinkone\NovaPageSettings\Model\PageSetting
{
    use \NovaFlexibleContent\Concerns\HasFlexible;

    public function valueFlexible(array $layoutMapping = []): \NovaFlexibleContent\Layouts\LayoutsCollection
    {
        return $this->flexible('value', $layoutMapping);
    }
}
```

Credits
-------

[](#credits)

- [![Think Studio](https://camo.githubusercontent.com/8e541bece07d503c85a126b5294865faa00e27371048772f566a0cce8c01fd3a/68747470733a2f2f7961726f736c617777772e6769746875622e696f2f696d616765732f73706f6e736f72732f7061636b616765732f6c6f676f2d7468696e6b2d73747564696f2e706e67)](https://think.studio/)

###  Health Score

29

—

LowBetter than 60% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity68

Established project with proven stability

 Bus Factor1

Top contributor holds 100% 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 ~71 days

Total

13

Last Release

988d ago

Major Versions

1.0.0 → 2.0.02021-12-22

2.2.0 → 3.0.02022-07-07

3.0.0 → 4.0.02022-09-10

PHP version history (4 changes)1.0.0PHP &gt;=7.4

2.0.0PHP &gt;=8.0

3.0.0PHP &gt;=8.1

4.1.1PHP ^8.1

### Community

Maintainers

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

---

Top Contributors

[![yaroslawww](https://avatars.githubusercontent.com/u/23663794?v=4)](https://github.com/yaroslawww "yaroslawww (19 commits)")

---

Tags

Settingsnovalaravel-novasettings page

###  Code Quality

TestsPHPUnit

Static AnalysisPsalm

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/yaroslawww-nova-page-settings/health.svg)

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

###  Alternatives

[outl1ne/nova-settings

A Laravel Nova tool for editing custom settings using native Nova fields.

296883.2k3](/packages/outl1ne-nova-settings)[optimistdigital/nova-sortable

This Laravel Nova package allows you to reorder models in a Nova resource's index view using drag &amp; drop.

2872.1M6](/packages/optimistdigital-nova-sortable)[outl1ne/nova-sortable

This Laravel Nova package allows you to reorder models in a Nova resource's index view using drag &amp; drop.

2861.8M9](/packages/outl1ne-nova-sortable)[norman-huth/nova-assets-changer

Change Nova resources

2570.1k](/packages/norman-huth-nova-assets-changer)[sbine/route-viewer

A Laravel Nova tool to view your registered routes.

57215.9k](/packages/sbine-route-viewer)[markwalet/nova-modal-response

A Laravel Nova asset for Modal responses on an action.

14720.0k](/packages/markwalet-nova-modal-response)

PHPackages © 2026

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