PHPackages                             siipis/cms - 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. siipis/cms

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

siipis/cms
==========

Content Management System built on Twig and Laravel

1.0.0(9y ago)0311MITPHPPHP &gt;=5.5.9

Since Dec 14Pushed 9y ago1 watchersCompare

[ Source](https://github.com/Siipis/CMS)[ Packagist](https://packagist.org/packages/siipis/cms)[ RSS](/packages/siipis-cms/feed)WikiDiscussions master Synced 2mo ago

READMEChangelogDependencies (4)Versions (2)Used By (0)

CMS
===

[](#cms)

Content Management System built on Twig and Laravel

Install using `composer require siipis/cms`

Known issues
------------

[](#known-issues)

Template caching causes problems with page configuration. You can either regularly clear the cache by running the console command `twig:clean` or by disabling the cache altogether.

Set `'cache' => false,` in the `twigbridge.php` config file to disable caching.

Usage
=====

[](#usage)

Service provider &amp; Facade
-----------------------------

[](#service-provider--facade)

Add the following lines in the `app.php` config file:

Providers:

```
Siipis\CMS\ServiceProvider::class,

```

Aliases:

```
'Twig'      => TwigBridge\Facade\Twig::class,
'YAML'      => Symfony\Component\Yaml\Yaml::class,

'CMS'       => Siipis\CMS\Facade\CMS::class,
'CMS_Helper'=> Siipis\CMS\Facade\Scaffolding::class,
'CMS_Parser'=> Siipis\CMS\Facade\Parser::class,

```

Routing
-------

[](#routing)

Add at the end of the `routes.php` file

```
/*
 *  Catch-all route for views
 */
Route::get('{route}', function ($route) {
    return CMS::view($route);
})->where('route', '.*');

```

Add a twig file under `resources/views/pages` to serve the view without a controller in between.

Within controllers
------------------

[](#within-controllers)

CMS views can be served through the CMS facade using `CMS::view('page')`. Note that paths are relative to the pages directory.

Folder configuration
====================

[](#folder-configuration)

Place the following directories directly under the template root (default `resources/views`)

- layout
- menus
- pages
- partials

Extended Twig syntax
====================

[](#extended-twig-syntax)

### {% page %}

[](#-page-)

Used in layout files for indicating where the page is placed in the layout.

### {% title %}

[](#-title-)

Placeholder tag for the page title.

### Include helpers

[](#include-helpers)

The following helper tags are included to clean up the syntax. All paths are relative to the include type.

- {% menu 'filename' %}
- {% partial 'filename' %}

Layout pages
============

[](#layout-pages)

The pagecontains an optional config section in the beginning of the file. The divider is `===`.

Typical layout file:

```
title: Welcome
layout: default
with:
- world: "Twig"
data:
- users:all

===

Hello {{ world }}

{% for user in users %}
   {{ user.name }}
{% endfor %}

```

Available config tags
---------------------

[](#available-config-tags)

- `title`: Page title, appended using {% title %}
- `layout`: Name of a file in the layout directory, with or without the .twig extension
- `with`: Key value attributes to be sent to the page
- `data`: Data provider accessor

Data Providers
==============

[](#data-providers)

Data providers extend the `CMS\DataProvider` class and can be used to serve data without a controller.

Use `php artisan make:data ProviderName` to create a new data provider. By default data providers are located in the `app/CMS/Data` directory.

Data providers must implement three methods:

- `getAccessor`: name of the accessor called by the config, e.g. 'users'
- `dataAll()`: returns all entries, called with `:all`
- `dataOne($id)`: returns a single entry, called with `:one[1]`

Additional methods can be created by additional methods.

Accessing the data
------------------

[](#accessing-the-data)

The data is automatically sent to the view and can be accessed by the accessor name, e.g. `{{ users }}`. If `users:one[1]` was called, the accessor is in singular, i.e. `user`.

Pseudo numbers
--------------

[](#pseudo-numbers)

Accessor methods accept the following pseudo numbers (example: users:one\[#auth\]):

- `#auth`: returns the id of the authenticated user, or null if no login exists
- `#url`: returns the last url query, e.g. `http://example.com/foo/bar` returns `bar`

The pseudo numbers are defined in `CMS\Parser\DataParser.php`.

###  Health Score

26

—

LowBetter than 43% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community5

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

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

Unknown

Total

1

Last Release

3440d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/c585c372c1f4ffaba160e987df1509e3c522e4a30cec6963d8f9ef06a6e36b9a?d=identicon)[Siipis](/maintainers/Siipis)

---

Tags

laraveltemplatingtwiglaraveltwigcms

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/siipis-cms/health.svg)

```
[![Health](https://phpackages.com/badges/siipis-cms/health.svg)](https://phpackages.com/packages/siipis-cms)
```

###  Alternatives

[hedronium/spaceless-blade

Adds the @spaceless tag to Blade. (works like in Twig)

32632.8k1](/packages/hedronium-spaceless-blade)[brackets/admin-ui

Administration user interface template

29258.6k3](/packages/brackets-admin-ui)[delatbabel/viewpages

Support rendering/view of Laravel pages and templates from a database.

121.4k](/packages/delatbabel-viewpages)

PHPackages © 2026

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