yaapis / Theme by yaapis

Theme support for Laravel 4/5 with assets, theme extends etc.
34,216
90
4
Package Data
Maintainer Username: yaapis
Maintainer Contact: yaapis@gmail.com (Biluk Andrey)
Package Create Date: 2014-04-27
Package Last Update: 2024-03-19
Language: PHP
License: MIT
Last Refreshed: 2024-03-23 03:10:32
Package Statistics
Total Downloads: 34,216
Monthly Downloads: 292
Daily Downloads: 6
Total Stars: 90
Total Watchers: 4
Total Forks: 22
Total Open Issues: 6

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!

Installation

Require this package in your composer.json:

"yaap/theme": "2.*"

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

'YAAP\Theme\ThemeServiceProvider',

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,
    );

##Usage

Structure

├── 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

Theme::init($name)

This will add to views find path:

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

Making view

View::make('hello');
View::make('emails.notify');

Assets

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

	@extends('layouts.master')

	@include('partials.header')

	@section('content')

	    <section id="main">
	        <h1>HOME</h1>
	    </section>
	@stop

	@include('partials.footer')

###Fallback capability

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