PHPackages                             sideapps/laravel-pages - 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. sideapps/laravel-pages

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

sideapps/laravel-pages
======================

Dynamic &amp; static page class for Laravel Eloquent models

1.1.2(5y ago)033MITPHPPHP ^7.4

Since Jan 11Pushed 5y ago1 watchersCompare

[ Source](https://github.com/sideapps/laravel-pages)[ Packagist](https://packagist.org/packages/sideapps/laravel-pages)[ RSS](/packages/sideapps-laravel-pages/feed)WikiDiscussions master Synced 3w ago

READMEChangelog (1)Dependencies (3)Versions (13)Used By (0)

About Laravel Pages
===================

[](#about-laravel-pages)

Laravel pages is a package for laravel that allows you to represent your views with a PHP class

This package offers 2 type of class :

- Static (like home page)
- Dynamic (eloquent model)

Works with joedixon/laravel-translation &amp; spatie/laravel-translatable

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

[](#installation)

```
composer require sideapps/laravel-pages
```

or

```
"require": {
    "sideapps/laravel-pages": "^1.0.4"
},
```

Usage
-----

[](#usage)

### Static page

[](#static-page)

```
php artisan page:static TestStaticPage
```

```
namespace App\Pages;

use Sideapps\LaravelPages\Breadcrumb\Breadcrumb;
use Sideapps\LaravelPages\Pages\StaticPage;
use Sideapps\LaravelPages\Pages\Page;

class TestStaticPage extends StaticPage implements Page {

    protected static string $translation_key = 'test_page';

    protected static string $route = 'test';

    protected static string $view = 'static.test';

    public function getBreadcrumb():?Breadcrumb {
        return new Breadcrumb([
            $this->getBreadcrumbItem(false) // set false for not clickable anchor
        ]);
    }

}
```

```
class StaticPageController extends Controller {

    private CreatePageFactory $createPageFactory;

    public function __construct(CreatePageFactory $createPageFactory) {
        $this->createPageFactory = $createPageFactory;
    }

    public function test() {
        $page = $this->createPageFactory->getPage(TestStaticPage::class);
        return $page->render();
    }

    ...

}
```

You must be create translation file for your page and set up these attributes (editable in the config or for each class page):

- meta\_title
- meta\_description
- fil\_ariane
- titre\_h1

### Dynamic page

[](#dynamic-page)

```
php artisan page:dynamic PostPage
```

```
namespace App\Pages;

use Sideapps\LaravelPages\Breadcrumb\Breadcrumb;
use Sideapps\LaravelPages\Pages\DynamicPage;
use Sideapps\LaravelPages\Pages\Page;

class PostPage extends DynamicPage implements Page {

    protected static string $translation_key = 'post_page';

    protected static string $route = 'posts.show';

    protected static string $view = 'posts.show';

    public function routeParams():array {
        return [
            'slug' // Same as 'slug' => 'slug' (get $this->model->slug value)
            'slugBis' => 'slug' // (get $this->model->slug value) for slubBis route parameter
            'slugBisBis' => function() {return $this->model->slug;} // Specify value with closure
        ];
    }

    public function getBreadcrumb():?Breadcrumb {
        return new Breadcrumb([
            $this->createPageFactory->getPage(HomePage::class)->getBreadcrumbItem(),
            $this->getBreadcrumbItem(false) // set false for not clickable anchor
        ]);
    }

}
```

```
class Post extends Model implements Pageable {

    use HasTranslations;

    public array $translatable = [
        'meta_title', 'meta_description', 'title', 'html_content', 'slug'
    ];

    public function getPage():Page {
        return CreatePageFactory::make()->getPage(PostPage::class, $this);
    }

}
```

```
class PostController extends Controller {

    ...

    public function show(string $locale, string $slug) {
        $post = $this->postRepository->findBySlug($slug);
        $page = $post->getPage();
        return $page->render(compact($post));
    }

}
```

Your eloquent model must implements Pageable Interface &amp; had these attributes :

- meta\_title
- meta\_description
- breadcrumb
- title

### Global

[](#global)

You now have a $page variable in all your blade views. You can also use it in layout, for example :

```

    {{ $page->getMetaTitle() }} - Site Name

    {!! $page->generateMetaIndex() !!}
    {!! $page->generateAlternateLinks() !!}

    {!! $page->generateSwitchLanguageLinks() !!}
    {!! $page->generateBreadcrumb() !!}
    @yield('content')

```

Options
-------

[](#options)

### no index, no follow

[](#no-index-no-follow)

```
protected static bool $metaIndex = false;
```

Add this line to your page class

Methods available in views
--------------------------

[](#methods-available-in-views)

##### Get translation :

[](#get-translation-)

```
{{ $page->trans('paragraph1') }}
```

##### Get lang attribute :

[](#get-lang-attribute-)

```
{{ $page->getLangAttribute() }}
```

##### get meta-title :

[](#get-meta-title-)

```
{{ $page->getMetaTitle() }}
```

##### get meta-description :

[](#get-meta-description-)

```
{{ $page->getMetaDescription() }}
```

##### Generate no index meta (generate meta noindex, nofollow if page is noindex) :

[](#generate-no-index-meta-generate-meta-noindex-nofollow-if-page-is-noindex-)

```
{{ $page->generateMetaIndex() }}
```

##### Generate alternate links :

[](#generate-alternate-links-)

```
{{ $page->generateAlternateLinks() }}
```

##### Generate switch languages links :

[](#generate-switch-languages-links-)

```
{{ $page->generateSwitchLanguageLinks() }}
```

##### Generate breadcrumb :

[](#generate-breadcrumb-)

```
{{ $page->generateBreadcrumb() }}
```

Publish config &amp; views files
--------------------------------

[](#publish-config--views-files)

```
php artisan vendor:publish --provider="Sideapps\LaravelPages\LaravelPagesServiceProvider"
```

###  Health Score

26

—

LowBetter than 41% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity60

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 ~13 days

Recently: every ~36 days

Total

12

Last Release

1855d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/23141ad63ee3b87bf2003ea2c5c578799e04d94d7b3a4a6fb63715a7947e67ed?d=identicon)[sideapps](/maintainers/sideapps)

---

Top Contributors

[![julien-culieras](https://avatars.githubusercontent.com/u/23709666?v=4)](https://github.com/julien-culieras "julien-culieras (15 commits)")

### Embed Badge

![Health badge](/badges/sideapps-laravel-pages/health.svg)

```
[![Health](https://phpackages.com/badges/sideapps-laravel-pages/health.svg)](https://phpackages.com/packages/sideapps-laravel-pages)
```

###  Alternatives

[markwalet/nova-modal-response

A Laravel Nova asset for Modal responses on an action.

17878.9k](/packages/markwalet-nova-modal-response)[crumbls/layup

A visual page builder plugin for Filament 5 — Divi-style grid layouts with extensible widgets.

592.7k2](/packages/crumbls-layup)[tomshaw/electricgrid

A feature-rich Livewire package designed for projects that require dynamic, interactive data tables.

119.4k](/packages/tomshaw-electricgrid)

PHPackages © 2026

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