Simple theme support for Laravel 4
Inspired by lightgear/theme, but not depend on specific asset manager., (*1)
Install
Composer require:, (*2)
"bigecko/laravel-theme": "dev-master"
Service provider:, (*3)
'Bigecko\LaravelTheme\LaravelThemeServiceProvider',
Alias:, (*4)
'Theme' => 'Bigecko\LaravelTheme\Facade',
Usage
Structure
โโโ public/
โโโ themes/
ย ย โโโ mytheme/
| โโโ js/
| โโโ css/
ย ย | โโโ views/
|
ย ย โโโ anothertheme/
Create a new folder public/themes., (*5)
Create a folder in themes use your theme name, like mytheme., (*6)
Put your theme templates file to mytheme/views., (*7)
init theme
Theme::init('mytheme');
custom path
Theme::init('mytheme', array(
'public_dirname' => 'allthemes', // Base dirname for contain all themes, relative to public path.
'views_path' => app_path('views'), // Change the path to contain theme templates.
));
Once you change the views_path, the sub dir views for theme is not needed,
just create your theme folder in views_path, and put templates in it.
like: app/views/mytheme/hello.blade.php., (*8)
Code example
View::make('home'); // First find in 'public/themes/mytheme/views/'.
// If file not exist, will use default location 'app/views/'.
Theme::asset('js/a.js'); // 'http://domain/themes/mytheme/js/a.js'
Theme::publicPath('js/jquery.js') // /path/to/project/public/themes/mytheme/js/jquery.js
Theme::name(); // Get current theme name.
Also support package templates overriding, just put package templates to your theme views folder., (*9)
Why use this?
Simple:, (*10)
- Dot not need change code to render template, still
View::make.
- No asset management or other dependencies.
- No new config file.
- Just few lines of code, easy to read.
- Only for theme, no more other responsibilities.
TODO