• Stars
    star
    230
  • Rank 174,053 (Top 4 %)
  • Language
    PHP
  • License
    MIT License
  • Created almost 6 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Static pages content management for Laravel Nova

Nova Page

Maintainability Test Coverage

Ever wanted to expose static content of an "About" page as editable fields in your app's administration without having to create specific models & migrations? Using this package, you'll be able to do so. By default, it will store the content in JSON files in the application's resources/lang directory, making them available for version control. A database source is also available.

This package adds basic flat-file CMS features to Laravel Nova in a breeze using template configurations as if it were administrable Laravel Models, meaning it allows the usage of all the available Laravel Nova fields and tools.

Quick start

Here's a very condensed guide to get you started asap. For more details, examples and advanced features, take a look at the full docs.

Install

Laravel Nova nova-page
< 9.x < 4.0 < 0.3.0
9.x 4.0 ^ 0.3.0
composer require whitecube/nova-page

Then register the Nova tool in app/Providers/NovaServiceProvider.php:

public function tools()
{
    return [
        \Whitecube\NovaPage\NovaPageTool::make(),
    ];
}

Usage

In order to assign fields (and even cards!) to a page's edition form, we'll have to create a Template class and register this class on one or more routes. You'll see, it's quite easy.

Creating Templates

php artisan make:template About
namespace App\Nova\Templates;

use Illuminate\Http\Request;
use Laravel\Nova\Fields\Text;
use Whitecube\NovaPage\Pages\Template;

class About extends Template
{

    /**
     * Get the fields displayed by the resource.
     *
     * @param  \Laravel\Nova\Http\Requests\NovaRequest $request
     * @return array
     */
    public function fields(NovaRequest $request)
    {
        return [
            Text::make('Title of the page', 'title')
        ];
    }

    /**
     * Get the cards available for the request.
     *
     * @param  \Laravel\Nova\Http\Requests\NovaRequest $request
     * @return array
     */
    public function cards(NovaRequest $request)
    {
        return [];
    }
}
Route::get('/about-me', 'AboutController@show')
    ->template(\App\Nova\Templates\About::class)
    ->name('about');

Fields and cards definition is exactly the same as regular Laravel Nova Resources.

Loading the data in your pages

The easiest way is to use middleware.

In the App\Http\Kernel file:

protected $middlewareGroups = [
    'web' => [
        'loadNovaPage',
    ],
};

// ...

protected $routeMiddleware = [
    'loadNovaPage' => \Whitecube\NovaPage\Http\Middleware\LoadPageForCurrentRoute::class,
];

Accessing the data in your views

Retrieving the page's static values in your application's blade templates is possible with the get directive or using the Page facade.

<p>@get('title')</p>

// or

<p>{{ Page::get('title') }}</p>

Please note it is also possible to define Option Templates for repeated data, which can be accessed using:

<p>@option('footer.copyright')</p>

// or

<p>{{ Page::option('footer')->copyright }}</p>

πŸ’– Sponsorships

If you are reliant on this package in your production applications, consider sponsoring us! It is the best way to help us keep doing what we love to do: making great open source software.

Contributing

Feel free to suggest changes, ask for new features or fix bugs yourself. We're sure there are still a lot of improvements that could be made and we would be very happy to merge useful pull requests.

Thanks!

Made with ❀️ for open source

At Whitecube we use a lot of open source software as part of our daily work. So when we have an opportunity to give something back, we're super excited! We hope you will enjoy this small contribution from us and would love to hear from you if you find it useful in your projects.

More Repositories

1

nova-flexible-content

Flexible Content & Repeater Fields for Laravel Nova
PHP
774
star
2

laravel-cookie-consent

Register, configure and ask for cookies consent in a EU-compliant way
PHP
276
star
3

php-prices

A simple PHP library for complex monetary prices management
PHP
152
star
4

laravel-timezones

Store UTC dates in the database and work with custom timezones in the application
PHP
80
star
5

lingua

A PHP-7 language codes converter, from and to the most common formats (ISO or not)
PHP
42
star
6

laravel-search-builder

A package to build fast, index-friendly search queries for Laravel
PHP
23
star
7

swipy

A lightweight JavaScript library for simple swipe gesture events
JavaScript
21
star
8

laravel-sluggable

A trait to use on your models to generate slugs based on another attribute's value. Supports translated attributes.
PHP
21
star
9

white-sass

A few SASS mixins and functions we use on daily basis
SCSS
14
star
10

nova-google-maps

A searchable google maps field that uses the Algolia Places API.
Vue
14
star
11

morpher

A lightweight JavaScript library for animating SVG shapes between several states
JavaScript
9
star
12

pluton

A javascript dispatcher that links JS classes to dom elements
JavaScript
9
star
13

laravel-prices

Manage acquisition, selling & renting prices for products and services in your Laravel Application
PHP
8
star
14

Timer

A lightweight utility to display a timer in the page and perform actions at intervals.
JavaScript
7
star
15

nova-seo

An easy to use meta, link & general SEO manager for Laravel Nova
6
star
16

winbooks-on-web-php-client

A PHP Wrapper for the Winbooks On Web REST API.
PHP
6
star
17

laravel-flexible-content

Base library for repeated layout fields, content builders and other collection components
PHP
5
star
18

Dom

A super lightweight JavaScript Dom manipulator
JavaScript
4
star
19

bem-components

Easy BEM CSS implementation for Laravel Components
PHP
4
star
20

Select

A lightweight utility to make CSS-able select dropdowns
JavaScript
4
star
21

laravel-preset

Custom Laravel Preset for the Whitecube workflow
PHP
3
star
22

nova-media-cleaner

Analyze the usage of the uploaded files inside Laravel Nova's storage directory and decide how to handle the unused ones.
PHP
2
star
23

lightbox

A simple lightbox script we use on our projects
JavaScript
1
star
24

laravel-links

Store & resolve internal URLs without having to worry about route, slug or domain changes
PHP
1
star