Laravel's theme manager
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Theme support for Laravel 5

Inspired by bigecko/laravel-theme. Themes are stored inside default laravel's resources folder

For Laravel 4, please use the 1.* branch!


Require this package in your composer.json:

"yaap/theme": "2.*"

And add the ServiceProvider to the providers array in config/app.php


Publish config using artisan CLI (if you want to overwrite default config).

php artisan vendor:publish --tag="config"

You can register the facade in the aliases key of your config/app.php file.

'aliases' => array(
    'Theme' => 'YAAP\Theme\Facades\Theme'

Package config

	return array(
        'path'          => base_path('resources/themes'),
        'assets_path'   => 'assets/themes',

Theme config

	return array(
        'name'         => 'default',
        'inherit' => null,



├── resources/
    └── themes/
        ├── default/
        |   ├── layouts/
            ├── partials/
            ├── views/
	        |   └── hello.blade.php
	        └── config.php

        └── admin/

    ├── views/
    |   ├── emails/
    |   |   └── notify.blade.php
    |   └── hello.blade.php
    └── lang/

├── public/assets/
    └── themes/
		└── default/
			├── css/
			|	└── styles.css
			└── images/
                └── icon.png

Create theme with artisan CLI

The first time you have to create theme "default" structure, using the artisan command:

php artisan theme:create default

To delete an existing theme, use the command:

php artisan theme:destroy default

###Init theme


This will add to views find path:

  • resources/themes/{$name}
  • resources/themes/{$name}/views

Making view



Assets can be nested too. Asset url can be automatically with version.

<link rel="stylesheet" href="{{ Theme::asset('css/styles.css', null, true) }}"/>
<link rel="stylesheet" href="{{ Theme::asset('css/ie.css', null, 'v1') }}"/>

The first one will get version from filemtime, the second one - from params

###Blade templates




	    <section id="main">


###Fallback capability

You still able to use default View::make('emails.notify') which is stored outside the themes directory