Gekkon template engine. Документация на Русском

Gekkon-это простой в использовании и быстрый шаблонизатор на PHP, что позволяет отделить HTML код от PHP-кода. Это приводит в более чистый код, который легче читать и поддерживать. Обзор синтаксиса - Переменные, Функции, Выражения, Шаблоные Теги

Gekkon template engine. Документация на Русском

» » Сообщение:

Gekkon-это простой в использовании и быстрый шаблонизатор на PHP, что позволяет отделить HTML код от PHP-кода.
Это приводит в более чистый код, который легче читать и поддерживать.

Установка (Install)
Использование(Usage)
Синтаксис (Syntax)
Параметры (Settings)

Обзор синтаксиса

Переменные
Функции
Выражения
Шаблоные Теги:

скачать тут: github.com/toecto/gekkon
gekkon, шаблонизатор, установка, install, basic usage, composer, autoload, initialize, render, template, gekkon syntax, contains, variables, expressions, functions, object, methods, fields, tags, параметры, settings, auto_escape, tag, шаблоные теги, cache, comment, cycle, for, foreach, if,

Установка (Install)

Admin » » Сообщение:

Simple Install

  • Download the latest Gekkon release in ZIP/GZIP package and extract it to your project directory.
  • Create an empty directory to store your template files.
  • Create another empty directory to store your compiled versions (cache) of templates.

Include the gekkon.php in your project.

Код: Выделить всё Развернуть
include "gekkon/gekkon.php";

Install via Composer

Add Gekkon to your composer.json requirements:

Код: Выделить всё Развернуть
{
    "require": {
        "gekkon/gekkon": "4.*"
    }
}

Install...

Код: Выделить всё Развернуть
php composer.phar install

...and load gekkon in your project:

Код: Выделить всё Развернуть
require "gekkon/autoload.php";
gekkon, шаблонизатор, установка, install

Использование(Usage)

Admin » » Сообщение:

Basic usage

Include the gekkon.php in your project.

Код: Выделить всё Развернуть
include "gekkon/gekkon.php";

or if you use Composer:

Код: Выделить всё Развернуть
require "gekkon/autoload.php";

Initialize Gekkon

Create a new instance of the Gekkon class passing the configuration parameters:

  • Full path to template directory. (need read permission)
  • Full path to compiled templates directory. (need access to read and write)

All paths must ends with /.

Код: Выделить всё Развернуть
$gekkon = new Gekkon('/path/to/templates/', '/path/to/compiled/templates/');

Render template

Use the display() method to display template by name:

Код: Выделить всё Развернуть
$gekkon->display('main.tpl', $vars);

Use the get_display() method to save output into the variable:

Код: Выделить всё Развернуть
$output = $gekkon->get_display('main.tpl', $vars);
gekkon, шаблонизатор, basic usage, composer, autoload, initialize, render, template

Синтаксис (Syntax)

Admin » » Сообщение:

Gekkon Syntax

Gekkon syntax similar to the Smarty with some differences.

A template contains variables or expressions, which get replaced with values when the template is evaluated, and tags, which control the logic of the template.

  • Use {$global_variable} or {@local_variable} markup in your template files to display the value of a variable defined in the PHP backend of your project (or in the template).
  • Use {tagName}...HTML content...{/tagName} markup in your template files to display dynamic content generated through foreach loops or conditional statements.

Variables

Use variables

Template syntax Description PHP equivalent
{$var} Display variable value. $var;
{$var.0}
{$var.1.2}
Access to simple array values by index. $var[0];
$var[1][2];
{$var.key_name}
{$var.key_name.key_name}
Access to associative array values by key name. $var['key_name'];
$var['key_name']['key_name'];

Also, you can use variables to access the value of an associative array as a key:

Template syntax PHP equivalent
{$var.$key_name} $var[$key_name];
{$var.$key_name1.$key_name2} $var[$key_name1][$key_name2];

Functions

You can call functions (including built-in PHP):

Template syntax PHP equivalent
{$var.foo()} foo($var);
{$var.foo().bar()} bar(foo($var));
{$var.isset()} isset($var);
{$str.strlen()} strlen($str);

object methods (without passing parameters):

Код: Выделить всё Развернуть
{$obj->method_name()}

To access the object methods with parameters, use {set} template tag.

and object fields:

Код: Выделить всё Развернуть
{$obj->field_name}

Expressions

Код: Выделить всё Развернуть
{$var + 1}
{$var1 * $var2}

You can use the result of the expressions when accessing an associative array. To do this, you must enclose the expression in parentheses ().

Код: Выделить всё Развернуть
{$var.($arr.0)}
{$var.($arr.1.foo())}
{$var.($arr.1.foo()).bar()}

Template tags

All template tags are contained within the structure.

Код: Выделить всё Развернуть
{tag_name}

Tags may contain parameters:

Код: Выделить всё Развернуть
{tag arg}
{tag arg1 arg2}

including a key-value format:

Код: Выделить всё Развернуть
{tag arg_name=$arg_value}
{tag arg_name=$var.0}
{tag arg_name1=$arg_value1 arg_name2=$arg_value2}

Order of the parameters does not matter

Gekkon built-in tags:

gekkon, шаблонизатор, gekkon syntax, contains, variables, expressions, functions, object, methods, fields, template, tags

Параметры (Settings)

Admin » » Сообщение:

Settings

Gekkon has some settings that you can change after initialization.

Код: Выделить всё Развернуть
$gekkon = new Gekkon('/path/to/templates/', '/path/to/compiled/templates/');
$gekkon->settings['auto_escape'] = true;

auto_escape

HTML-escape each variables outputs.

(By default is False)

Affects performance.

tag_systems

Templating syntax setting.

(By default, uses a Smarty-like syntax.)

You can specify the characters for open and closing tags:

Код: Выделить всё Развернуть
$gekkon = new Gekkon('/path/to/templates/', '/path/to/compiled/templates/');
$gekkon->settings['tag_systems']['echo'] = array(
    'open' => '{{',
    'close' => '}}',
);
$gekkon->settings['tag_systems']['common'] = array(
     'open' => '{%',
    'close' => '%}',
);

And then, to use the new syntax in your templates:

Код: Выделить всё Развернуть
{% foreach from=$data item=$item meta=$loop %}
    <li>{{ $loop.counter }} {{ $item }}</li>
    {% if $loop.last %}
        <li>...</li>
    {% /if %}
{% empty %}
    Sorry, items not found...
{% /foreach %}
gekkon, шаблонизатор, параметры, settings

Tag {auto_escape}

Admin » » Сообщение:

Controls the current auto-escaping behavior. This tag takes either on or off as an argument and that determines whether auto-escaping is in effect inside the tag.

Код: Выделить всё Развернуть
{auto_escape on}
    {$html_title}
{/auto_escape}

Output:

Код: Выделить всё Развернуть
&lt;h1&gt;Gekkon&lt;/h1&gt;
Код: Выделить всё Развернуть
{auto_escape off}
    {$html_title}
{/auto_escape}

Output:

Код: Выделить всё Развернуть
<h1>Gekkon</h1>
gekkon, шаблонизатор, auto_escape, tag, шаблоные теги

Tag {cache}

Admin » » Сообщение:

This tag caches the contents for a given amount of time. It takes at least two arguments: the cache timeout, in seconds, and the id to give the cache fragment.

Код: Выделить всё Развернуть
{cache id="sidebar" timeout=500}
    ... sidebar ...
{/cache}
gekkon, шаблонизатор, tag, cache, шаблоные теги

gekkon, шаблонизатор, tag, comment, шаблоные теги

Tag {cycle}

Admin » » Сообщение:

Returns one of the passed arguments on each call. The first argument will be returned on the first call, the second on the second call and so on.

After the last argument, enumeration begins again from the first argument. Arguments can be variables.

This tag is most useful in the cycle.

Код: Выделить всё Развернуть
{foreach from=$dataritemu$item00}
  <tr class="{cycle 'row1' 'row2' $var1 $var2}">
        ...
    </tr>..
{/foreach}
gekkon, шаблонизатор, tag, cycle, шаблоные теги

Tag {for}

Admin » » Сообщение:

Loop tag, similar for loop in PHP.

Код: Выделить всё Развернуть
{for from=0 to=10 key=$i}
    {$i}
{/for}

This tag has a second syntax:

Код: Выделить всё Развернуть
{for $i=0; $i<10; $i++}
    {$i}
{/for}

The first expression $i=0 is executed once unconditionally at the beginning of the loop.

In the beginning of each iteration, second expression $i<10) is evaluated. If it evaluates to true, the loop continues and the nested statement(s) are executed. If it evaluates to false, the execution of the loop ends.

At the end of each iteration, third expression $i++ is evaluated (executed).

gekkon, шаблонизатор, tag, for, шаблоные теги

Tag {foreach}

Admin » » Сообщение:

Operator cycle iterates passed array.

You can use {empty} condition for ease of handling when the passed array is empty.

Код: Выделить всё Развернуть
{foreach from=$data item=$item key=$key}
    <li>{$item}</li>
{empty}
    Sorry, items not found...
{/foreach}

This tag has a second syntax:

Код: Выделить всё Развернуть
{foreach $data as $item}
    <li>{$item}</li>
{/foreach}
Код: Выделить всё Развернуть
{foreach $data as $key=>$value}
    <li>{$key}, {$value}</li>
{/foreach}

Also, you can specify the meta parameter, where declare a variable which will be contain meta-information about the counters of iteration.

Код: Выделить всё Развернуть
{foreach from=$data item=$item meta=$loop}
    <li>{$loop.counter} {$item}</li>
    {if $loop.last}
        <li>...</li>
    {/if}
{empty}
    Sorry, items not found...
{/foreach}

or

Код: Выделить всё Развернуть
{foreach $data as $item; $loop}
    <li>{$loop.counter} {$item}</li>
    {if $loop.last}
        <li>...</li>
    {/if}
{empty}
    Sorry, items not found...
{/foreach}
Meta-property Description
$loop.counter Loop counter starts from 1.
$loop.counter0 Loop counter starts from 0.
$loop.revcounter Reverse loop counter, starts from 1.
$loop.revcounter0 Reverse loop counter, starts from 0.
$loop.first true if it's the first iteration
$loop.last true if it's the last iteration
gekkon, шаблонизатор, tag, foreach, шаблоные теги

Tag {if}

Admin » » Сообщение:

This tag checks variable value and if the variable is true (variable is exists, is not empty and it's not false) displays the contents of the block.

Optionally, can be expanded by elseif and else tags.

Код: Выделить всё Развернуть
{if $value == 0}
    ...
{elseif $value == 1}
    ...
{else}
    ...
{/if}
gekkon, шаблонизатор, tag, if, шаблоные теги

Tag {ifchange}

Admin » » Сообщение:

Check if a value has changed from the last loop iteration. This tag is used within a foreach loop and has two possible use cases:

Checks its own rendered contents against its previous state and only displays the content if it has changed:

Код: Выделить всё Развернуть
{foreach from=$days item=$date}
    {ifchange}<b>{$date.month}</b>{/ifchange}
{/foreach}

If given one or more variables, check whether any variable has changed:

Код: Выделить всё Развернуть
{foreach from=$days item=$date}
    {ifchange $date.month}...{/ifchange}
{/foreach}

Also you can use an optional {else} condition:

Код: Выделить всё Развернуть
{foreach from=$days item=$date}
    {ifchange $date.month}
        {cycle 'row1' 'row2'}
    {else}
        row3
    {/ifchange}
{/foreach}
gekkon, шаблонизатор, tag, ifchange, шаблоные теги

Tag {include}

Admin » » Сообщение:

{include} tags are used for including other templates in the current template. By default, any non-local variables available in the current template (global scope) are also available within the included template.

Код: Выделить всё Развернуть
{include "subtemplate.tpl"}
gekkon, шаблонизатор, tag, include, шаблоные теги

Tag {no_parse}, {static}

Admin » » Сообщение:

Stops compiling the contents enclosed in this tag.

Conveniently used to insert JavaScript code that may conflict with Gekkon syntax.

This tag has alias {static}.

Код: Выделить всё Развернуть
{no_parse}
    <script type="text/javascript">...JS code...</script>
{/no_parse}

or

Код: Выделить всё Развернуть
{static}
    <script type="text/javascript">...JS code...</script>
{/static}
gekkon, шаблонизатор, tag, no_parse, static, шаблоные теги

След.