Download .zip |
Info | Documentation | View files (33) | Download .zip | Reputation | Support forum | Blog | Links |
Last Updated | Ratings | Unique User Downloads | Download Rankings | |||||
2019-06-30 (10 months ago) | Not enough user ratings | Total: 38 | All time: 9,825 This week: 370 |
Version | License | PHP version | Categories | |||
themevel 1.3 | The PHP License | 5 | HTML, PHP 5, Libraries, Templates, Co... |
Description | Author | ||||||||
This package can manage themes and assets for Laravel applications. |
|
Themevel is a Laravel 5 theme and asset management package. You can easily integrate this package with any Laravel based project.
Themevel is a Laravel package so you can install it via Composer. Run this command in your terminal from your project directory:
composer require shipu/themevel
Wait for a while, Composer will automatically install Themevel in your project.
Below Laravel 5.5 you have to call this package service in config/app.php
config file. To do that, add this line in app.php
in providers
array:
Shipu\Themevel\Providers\ThemevelServiceProvider::class,
Below Laravel 5.5 version to use facade you have to add this line in app.php
to the aliases
array:
'Theme' => Shipu\Themevel\Facades\Theme::class,
Now run this command in your terminal to publish this package resources:
php artisan vendor:publish --provider="Shipu\Themevel\Providers\ThemevelServiceProvider"
Run this command in your terminal from your project directory.
Create a theme directory:
php artisan theme:create your_theme_name
What is theme title?:
>
What is theme description? []:
>
What is theme author name? []:
>
What is theme version? []:
>
Any parent theme? (yes/no) [no]:
> y
What is parent theme name?:
>
List of all themes:
php artisan theme:list
+----------+--------------+---------+----------+
| Name | Author | Version | Parent |
+----------+--------------+---------+----------+
| themeone | Shipu Ahamed | 1.1.0 | |
| themetwo | Shipu Ahamed | 1.0.0 | themeone |
+----------+--------------+---------+----------+
- app/
- ..
- ..
- Themes/
- themeone/
- assets
- css
- app.css
- img
- js
- lang
- en
-content.php
- views/
- layouts
- master.blade.php
- welcome.blade.php
- changelog.yml
- theme.json
You can change theme.json
and changelog.yml
name from config/theme.php
// ..
'config' => [
'name' => 'theme.json',
'changelog' => 'changelog.yml'
],
// ..
json
, yml
, yaml
, php
, ini
, xml
extension supported.
For example:
// ..
'config' => [
'name' => 'theme.json',
'changelog' => 'changelog.json'
],
// ..
Then run theme:create
command which describe above.
Now Please see the API List Doc.
For switching current theme you can use set
method.
Theme::set('theme-name');
For getting current theme details you can use get
method:
Theme::get(); // return Array
You can also get particular theme details:
Theme::get('theme-name'); // return Array
Theme::get('theme-name', true); // return Collection
Retrieve current theme's name:
Theme::current(); // return string
Retrieve all theme information:
Theme::all(); // return Array
For getting whether the theme exists or not:
Theme::has(); // return bool
For info about the specified theme:
$themeInfo = Theme::getThemeInfo('theme-name'); // return Collection
$themeName = $themeInfo->get('name');
// or
$themeName = $themeInfo['name'];
Also fallback support:
$themeInfo = Theme::getThemeInfo('theme-name'); // return Collection
$themeName = $themeInfo->get('changelog.versions');
// or
$themeName = $themeInfo['changelog.versions'];
// or you can also call like as multi dimension
$themeName = $themeInfo['changelog']['versions'];
For binding theme assets you can use the assets
method:
Theme::assets('your_asset_path'); // return string
It's generated at BASE_URL/theme_roots/your_active_theme_name/assets/your_asset_path
If your_asset_path
does not exist then it's find to active theme immediate parent assets folder. Look like BASE_URL/theme_roots/your_active_theme_parent_name/assets/your_asset_path
When using helper you can also get assets path:
themes('your_asset_path'); // return string
If you want to bind specific theme assets:
Theme::assets('your_theme_name:your_asset_path'); // return string
// or
themes('your_theme_name:your_asset_path'); // return string
Suppose you want to bind app.css
in your blade. Then below code can be applicable:
<link rel="stylesheet" href="{{ themes('app.css') }}">
Specific theme assets:
<link rel="stylesheet" href="{{ themes('your_theme_name:app.css') }}">
The lang
method translates the given language line using your current theme localization files:
echo Theme::lang('content.title'); // return string
// or
echo lang('content.title'); // return string
If you want to bind specific theme assets:
echo Theme::lang('your_theme_name::your_asset_path'); // return string
// or
echo lang('your_theme_name::your_asset_path'); // return string
Route::get('/', function () {
Theme::set('your_theme_name');
return view('welcome');
});
_This will firstly check if there is a welcome.blade.php in current theme directory. If none is found then it checks parent theme, and finally falls back to default Laravel views location._
If you want to specific theme view:
Route::get('/', function () {
Theme::set('your_theme_name');
return view('your_theme_name::welcome');
});
A helper middleware is included out of the box if you want to define a theme per route. To use it:
First register it in app\Http\Kernel.php:
protected $routeMiddleware = [
// ...
'theme' => \Shipu\Themevel\Middleware\RouteMiddleware::class,
];
Now you can apply the middleware to a route or route-group. Eg:
Route::group(['prefix' => 'admin', 'middleware'=>'theme:Your_theme_name'], function() {
// ... Add your routes here
// The Your_theme_name will be applied.
});
A helper middleware is included out of the box if you want to define a theme per route. To use it:
First register it in app\Http\Kernel.php:
protected $middlewareGroups = [
'web' => [
// ...
\Shipu\Themevel\Middleware\WebMiddleware::class,
],
// ...
];
Theme set from config/theme.php
.
You can also inject theme instance using ThemeContract, eg:
use Shipu\Themevel\Contracts\ThemeContract;
private $theme;
public function __construct(ThemeContract $theme)
{
$this->theme = $theme
}
Hey dude! Help me out for a couple of :beers:!
Files |
File | Role | Description | ||
---|---|---|---|---|
.github (1 file) | ||||
config (1 file) | ||||
src (8 directories) | ||||
tests (2 files) | ||||
.travis.yml | Data | Auxiliary data | ||
composer.json | Data | Auxiliary data | ||
LICENSE.md | Lic. | License text | ||
phpunit.xml | Data | Auxiliary data | ||
README.md | Doc. | Documentation |
Files | / | src |
File | Role | Description | ||
---|---|---|---|---|
Console (2 files, 1 directory) | ||||
Contracts (1 file) | ||||
Exceptions (1 file) | ||||
Facades (1 file) | ||||
Helpers (1 file) | ||||
Managers (1 file) | ||||
Middleware (2 files) | ||||
Providers (1 file) |
Files | / | src | / | Console |
File | Role | Description | ||
---|---|---|---|---|
stubs (14 files) | ||||
ThemeGeneratorCommand.php | Class | Class source | ||
ThemeListCommand.php | Class | Class source |
Files | / | src | / | Console | / | stubs |
File | Role | Description |
---|---|---|
changelogjson.stub | Data | Auxiliary data |
changelogphp.stub | Data | Auxiliary data |
changelogyaml.stub | Data | Auxiliary data |
changelogyml.stub | Data | Auxiliary data |
css.stub | Data | Auxiliary data |
ini.stub | Data | Auxiliary data |
json.stub | Data | Auxiliary data |
lang.stub | Data | Auxiliary data |
layout.stub | Data | Auxiliary data |
page.stub | Data | Auxiliary data |
php.stub | Data | Auxiliary data |
xml.stub | Data | Auxiliary data |
yaml.stub | Data | Auxiliary data |
yml.stub | Data | Auxiliary data |
Files | / | src | / | Middleware |
File | Role | Description |
---|---|---|
RouteMiddleware.php | Class | Class source |
WebMiddleware.php | Class | Class source |
Files | / | tests |
File | Role | Description |
---|---|---|
TestCase.php | Class | Class source |
ThemeTest.php | Class | Class source |
Version Control | Unique User Downloads | Download Rankings | |||||||||||||||
100% |
|
|
Applications that use this package |
Learning Laravel Learning Laravel Theme and asset management |
If you know an application of this package, send a message to the author to add a link here.