yaap/theme

Installs: 1 812

Dependents: 2

Stars: 10

Watchers: 4

Forks: 6

Open Issues: 2

Language: PHP

2.1 2015-06-26 13:18 UTC

README

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',
        'parent_theme' => 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') whitch stored outside the themes directory