Laravel 5 Themes: Asset & Views folder per theme. Theme inheritance. Blade integration and more...
roland/laravel-theme-manager is a Laravel package for laravel 5 themes: asset & views folder per theme. theme inheritance. blade integration and more....
It currently has 4 GitHub stars and 127 downloads on Packagist (latest version 1.1).
Install it with composer require roland/laravel-theme-manager.
Discover more Laravel packages by roland
or browse all Laravel packages to compare alternatives.
Last updated
This package is a theme management package for Laravel with a set of tools to help you easily and quickly build a theme management system for your laravel based project. The goal of this package is to remain as flexible as possible and provide a way to use it internally.
| Version | Laravel Version | PHP Version | |---- |----|----| | 1.0 | 5.5 | 7.1, 7.2 |
This package supports Blade, PHP and Twig template engines.
This package provides tools for the following:
##Installation
To get started with this package, add the following lines to your composer.json file and run composer update.
"require": {
"roland/laravel-theme-manager": "~1.0"
}
Or, Run composer require from your terminal to install the package via the Composer package manager:
composer require roland/laravel-theme-manager
If you disabled the laravel's automatic package discovery feature these will help you.
// Service Provider
Roland\Theme\ThemeServiceProvider::class,
// Facade
'Theme' => Roland\Theme\Facades\Theme::class,
Much of the package comes preconfigured, so that you can start building your API right away after you installed. You can either use .env file or config/themes.php to configure most of the package.
You also can publish the configuration file with the following Artisan command:
php artisan vendor:publish --provider="Roland\Theme\ThemeServiceProvider"
You can set the value to true or false to enable or disable the package.
enable => true,
Here you may specify which of the theme provider connections below you wish to use as your default provider.
Available drivers: "file"
'driver' => 'file',
Here you may specify the default theme.
'theme' => 'default',
Here you may specify a path for themes.
'path' => base_path('resources/themes'),
##Basic Usage
To create a theme, first, add a themes folder to the resources folder of your app.
Inside the themes folder, any folder you create with a theme.json the file represents a theme.
The folder structure will look like this:
resources
└── themes
├── [Theme folder]
| └── theme.json
| └── welcome.blade.php
|
└── [Another theme folder]
└── theme.json
└── welcome.blade.php
This package only recognize a folder as a theme when a file called theme.json exists.
This is the basic structure of the theme information file. You can add any number of key, value pairs to the file and retrieve later.
{
"theme_title": "Default theme",
"theme_description": "Default theme for the theme package",
"theme_uri": "https://domain.com",
"theme_version": "1.0.0",
"theme_license": "The MIT License (MIT)",
"theme_tags": "default, simple",
"theme_type": "web",
"author_name": "Jon Deep",
"author_email": "[email protected]",
"author_uri": "https://domain.com"
}
To simply display a view (welcome) using the current theme. Otherwise fallback (index).
return Theme::view(['welcome', 'index']);
To set the current theme on runtime.
return Theme::use('mytheme')->view(['welcome']);
To set the current theme and update the default config theme.
Theme::set('mytheme');
Add theme parameter to preview a theme on runtime.
https://localhost/?theme=mytheme
You also can change the theme provider at runtime.
return Theme::driver('file')->view(['welcome']);
To check whether a theme exists or not.
Theme::exists('mytheme');
To check all themes.
Theme::all();
Ps: it will return a json with all the installed themes
Return theme's information as json.
// Return default theme's info
return Theme::info();
// Return provided theme's info
return Theme::info('mytheme');
Pass data to views.
// with() method
return Theme::with(['name' => 'Victoria'])->view(['welcome']);
// Alternative way
return Theme::view(['welcome'], ['name' => 'Victoria']);
##Advanced
We allow you extend or add more theme providers using extend function on runtime without a hassle.
Theme::extend('riak', function($app)
{
return 'Riak theme driver';
});
// Chnage the theme driver from route
return Theme::driver('riak');
Configure Middleware
php artisan vendor:publishHttp/kernel.php add to protected 'theme' => \App\Http\Middleware\CheckTheme::class,Route example:
Route::get('/', ['uses' => 'TestController@home'])->middleware('theme:ThemeName');
ps. using the theme will allow you to use the deafult Laravel view() with the currect theme :)
This package is licensed under the The MIT License (MIT).