heyday/silverstripe-composeparser

Adds new syntax to SilverStripe's template engine

0.1.1 2014-06-22 21:39 UTC

README

Allows the use of an html-like syntax for template includes, and new composition functionality for more reusable templates.

Installation (with composer)

composer require heyday/silverstripe-composeparser

Examples

A reusable button

button.ss

<% if $href %>
    <a class="btn<% if $type %> btn-$type<% end_if %><% if $size %> btn-$size<% end_if %> $classes" href="$href"><% composed %></a>
<% else %>
    <button class="btn<% if $type %> btn-$type<% end_if %><% if $size %> btn-$size<% end_if %> $classes"><% composed %></button>
<% end_if %>

Using the button in a template

<:button type="default">A regular button</:button>

<:button type="default" href="http://heyday.co.nz">A link to heyday</:button>

The resulting html

<button class="btn btn-default">A regular button</button>

<a class="btn btn-default" href="http://heyday.co.nz/">A link to heyday</a>

A reusable Nav

nav.ss

<ul class="nav <% if $classes %> $classes<% end_if %>"><% composed %></ul>

navitem.ss

<li class="nav-item<% if $FirstLast %> nav-$FirstLast<% end_if %><% if $classes %> $classes<% end_if %>">
    <% if $Composed %>
        <% composed %>
    <% else %>
        <:navlink href=$href />
    <% end_if %>
</li>

navlink.ss

<a href="$href" class="$LinkingMode"><% if $Composed %><% composed %><% else %>$MenuTitle<% end_if %></a>

Using the nav

Simple usage:
<:nav>
    <% loop $SomeSet %>
        <:navitem href=$Link />
    <% end_loop %>
</:nav>

Customised usage:
<:nav>
    <% loop $SomeSet %>
        <:navitem>
            <% if $SomeCondition %><span class="i-special-icon"></span><% end_if %>
            <navlink href=$Link/>
        </:navitem>
    <% end_loop %>
</:nav>