Skip to content
Twig wrapper to control your layout.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
assets
src/Templator
tests
.gitignore
.travis.yml
README.md
composer.json

README.md

Templator

An awesome Twig wrapper to control your layout like a boss!

Build Status

What Templator can do for you?

  • Focus on position
  • Widget can be displayed in all the positions of a template
  • This will help reduce redundancy and keep you from writing too much code

If you are template designer

The template designer has complete control over block positions.

1

<!DOCTYPE html>
<html lang="en">
<head>
    <title>{{ title }}</title>
</head>
<body>
    {% block header %}{% endblock %}
    {% block left %}{% endblock %}
    {% block content %}{% endblock %}
    {% block right %}{% endblock %}
    {% block footer %}{% endblock %}
</body>
</html>

If you are developer

Developer has complete control widgets you want to appear in block positions.

$templator->blocks(array(
    'position' => array('widget')
));

Let see how it goes

2

$templator->blocks(array(
    'header'    => array('widget_a'),
    'left'      => array('widget_b'),
    'right'     => array('widget_c'),
    'footer'    => array('widget_d')
));

3

$templator->blocks(array(
    'header'    => array('widget_a'),
    'right'     => array('widget_c'),
    'footer'    => array('widget_d')
));

4

$templator->blocks(array(
    'header'    => array('widget_a'),
    'right'     => array('widget_b', 'widget_c', 'widget_e', 'widget_f'),
    'footer'    => array('widget_d')
));

Installation

Add the following into your composer.json file:

{
    "require": {
        "kristories/templator": "*"
    }
}

Then run

composer install

Usage

Basic

$templator = new \Templator\Templator();

// Set data
$templator->data('foo', 'bar');

// Set widgets
$templator->blocks(array(
    'header' => array('logo', 'search')
));

// Render
// base_template    => /templates/base/base_template.html
// page             => /templates/pages/page.html
echo $templator->render('base_template', 'page');

Config

$templator = new \Templator\Templator(array(
    'path'  => array(
        'root'      => 'templates',
        'base'      => 'base',
        'pages'     => 'pages',
        'widgets'   => 'widgets'
    ),
    'cache' => NULL
));

Structure :

├── templates/
|   ├── base/
|   |   └── base_template.html
|   ├── pages/
|   |   ├── home.html
|   |   ├── about.html
|   |   ├── contact.html
|   |   └── ...
|   └── widgets/
|   |   ├── logo.html
|   |   ├── menu.html
|   |   ├── tags.html
|   |   ├── search.html    
|   |   └── ...
└── cache/

Data

$templator->data('foo', 'bar');
// or
$templator->data(array(
    'foo' => 'bar',
    'bar' => 'baz'
));

Widgets

$templator->blocks(array(
    'header' => array('logo', 'mainmenu', 'search'),
    'footer' => array('copyright, 'footermenu')
));

Render

$templator->render('base_template', 'page');

Example

templator-bootstrap


Why Twig?

Twig is a modern template engine for PHP

  • Fast: Twig compiles templates down to plain optimized PHP code. The overhead compared to regular PHP code was reduced to the very minimum.
  • Secure: Twig has a sandbox mode to evaluate untrusted template code. This allows Twig to be used as a template language for applications where users may modify the template design.
  • Flexible: Twig is powered by a flexible lexer and parser. This allows the developer to define its own custom tags and filters, and create its own DSL.
You can’t perform that action at this time.