buzz / laravel-theme
Theme Management for Laravel 5.*
Requires
- php: >=5.4.0
- illuminate/routing: 5.0.*|5.1.*
- illuminate/support: 5.0.*|5.1.*
- mobiledetect/mobiledetectlib: 2.*
README
Detect device use package serbanghita/Mobile-Detect. If you want to be simple, use a version 1. Note: v2.* switch language to vietnamese
Contents
Introduction
This is package support the management view files and assets under separate folders. Compatible with Laravel 5.*
Installation
The first run command:
composer require buzz/laravel-theme 2.*
and then open config/app.php
add LaravelThemeServiceProvider
to array providers
'providers' => [
//.....
'Illuminate\Validation\ValidationServiceProvider',
'Illuminate\View\ViewServiceProvider,
//.....
'Buzz\LaravelTheme\LaravelThemeServiceProvider',
],
Add Theme
alias (when set auto_alias => false
in theme config):
'aliases' => [
//.....
'Validator' => 'Illuminate\Support\Facades\Validator',
'View' => 'Illuminate\Support\Facades\View',
//.....
'Theme' => 'Buzz\LaravelTheme\ThemeFacade',
],
Configuration
Publish config file config/theme.php
with command:
php artisan vendor:publish --provider="Buzz\LaravelTheme\LaravelThemeServiceProvider"
Usage
Structure
Assets
├── public/
└── themes/
├── theme_name/
| ├── js/
| ├── css/
|
└── another_theme_name/
Views
├── resources/
└── themes/
├── theme_name/
| ├── index.blade.php
| ├── footer.blade.php
|
└── another_theme_name/
Render view
package does not change the way you render view, you still use the View::make
or view()
as default of laravel, read more on views document. If the render view and the view does not exist in the resources/themes/theme-name
, it will render view in resources/views
.
Theme assets
Use themeAsset()
instead of asset()
when link to assets in theme, example:
<link rel="stylesheet" href="{!! themeAsset('css/bootstrap.css') !!}"> //render <link rel="stylesheet" href="http://domain/themes/theme-name/css/bootstrap.css">
Change current theme
You can change the theme in the following ways:
app('theme')->set($themeName)
Or use function helper
setTheme($themeName);//function helper
or use Facade
Theme::set($themeName);//use facade
Support methods
Theme::client();//return object of MobileDetect Theme::pathTheme($name = null);//return path to current theme or name input Theme::currentTheme();//return name of current theme Theme::reset();//reset default theme Theme::set();//set theme Theme::allTheme($except = [], $config = true);//get list theme in folder themes themeAsset($name = false);//link to asset current theme or by theme name setTheme($name);// change theme by theme name
Support other config provider
By default package use provider config
of laravel, you can change to provider you want by edit config 'config_provider' => 'provider_name'
P/s: excuse me my English.