diff options
Diffstat (limited to 'example')
-rw-r--r-- | example/index.php | 58 | ||||
-rw-r--r-- | example/templates/src/articles.html | 49 | ||||
-rw-r--r-- | example/templates/src/custom_tags.tpl | 19 | ||||
-rw-r--r-- | example/templates/src/master.html | 41 |
4 files changed, 167 insertions, 0 deletions
diff --git a/example/index.php b/example/index.php new file mode 100644 index 0000000..3d2b1ca --- /dev/null +++ b/example/index.php @@ -0,0 +1,58 @@ +<?php + +# Example program to demonstrate the STE... + +require_once(dirname(__FILE__) . "/../stupid_template_engine.php"); + +# Initialize an STECore instance +$ste = new \ste\STECore( + new \ste\FilesystemStorageAccess( # The STECore needs a StorageAccess implementation, we are using the FilesystemStorageAccess, which comes with STE. + dirname(__FILE__) . "/templates/src", # FilesystemStorageAccess needs a directory, where the Templates are... + dirname(__FILE__) . "/templates/transc" # ...and a directory for the transcompiled templates (write permissions needed). + ) +); + +# First, lets define some custom tags. + +# <ste:uppercase> will exchange all letters with their uppercase complement +$ste->register_tag("uppercase", + function($ste, $params, $sub) + { + $text = $sub($ste); # Get the tags content + return strtoupper($text); # Return the new text. + } +); + +# <ste:repeat> will repeat its content n times (<ste:for> could be used too, but i needed more examples :-P ) +$ste->register_tag("repeat", + function($ste, $params, $sub) + { + $output = ""; + if(!is_numeric($params["n"])) + throw new Exception("Sorry, but parameter n must be a number..."); + + for($i = 0; $i < $params["n"]; ++$i) + $output .= $sub($ste); + + return $output; + } +); + +# assign some data +$ste->vars["users"] = array( + array("name" => "Foo", "username" => "foo", "online" => true), + array("name" => "Bar", "username" => "bar", "online" => false), + array("name" => "Baz", "username" => "baz", "online" => true) +); +$ste->vars["title"] = "cool"; +$ste->vars["articles"] = array( + array("author" => "foo", "title" => "cool article", "timestamp" => 1316553353, "excerpt" => "bla", "full" => "blablabla"), + array("author" => "bar", "title" => "awesome", "timestamp" => 1316552000, "excerpt" => "...", "full" => ".........."), + array("author" => "baz", "title" => "<ingenious", "timestamp" => 1316551000, "excerpt" => "...", "full" => ".........."), + array("author" => "baz", "title" => "whatever...", "timestamp" => 1316550000, "excerpt" => "...", "full" => "..........") +); + +# Execute the template and output the result +echo $ste->exectemplate("articles.html"); + +?> diff --git a/example/templates/src/articles.html b/example/templates/src/articles.html new file mode 100644 index 0000000..e007f3e --- /dev/null +++ b/example/templates/src/articles.html @@ -0,0 +1,49 @@ +<ste:load name="custom_tags.tpl" /> +<ste:load name="master.html" /> +<ste:comment>Lets overwrite the content section</ste:comment> +<ste:block name="content"> + <h2>Some Articles</h2> + <ste:foreach_limit array="articles" value="article" max="3" counter="i"> + <h3><ste:uppercase><ste:escape>$article[title]</ste:escape></ste:uppercase></h3> + <div class="author">Author: <ste:escape>$article[author]</ste:escape></div> + <div class="date"><ste:date timestamp="$article[timestamp]">d. M. Y, H:i:s</ste:date></div> + <div class="article_content"> + <ste:if> + <ste:cmp var_a="i" op="eq" text_b="0" /> + <ste:then> + <ste:comment>First entry, lets show the whole text</ste:comment> + $article[full] + </ste:then> + <ste:else> + $article[excerpt] + </ste:else> + </ste:if> + </div> + <hr /> + </ste:foreach_limit> + <ste:comment>There are more than 3 articles?</ste:comment> + <ste:set var="articles_n"><ste:arraylen array="articles" /></ste:set> + <ste:if> + <ste:cmp var_a="articles_n" op="gt" text_b="3" /> + <ste:then> + <p>There are <a href="#">more articles</a>.</p> + </ste:then> + </ste:if> + + <h2>Some more useless demo stuff...</h2> + <h3>Counting from 10 to 0...</h3> + <p>but take only the even ones and multiply by 5...</p> + <ste:for start="10" stop="0" step="-1" counter="i"> + <ste:if> + <ste:even>$i</ste:even> + <ste:then> + <ste:calc>$i * 5</ste:calc><br /> + </ste:then> + </ste:if> + </ste:for> + + <h3>Repeat some text...</h3> + <ste:repeat n="10"> + <p>Bla</p> + </ste:repeat> +</ste:block> diff --git a/example/templates/src/custom_tags.tpl b/example/templates/src/custom_tags.tpl new file mode 100644 index 0000000..7e821c5 --- /dev/null +++ b/example/templates/src/custom_tags.tpl @@ -0,0 +1,19 @@ +<ste:comment>A foreach that will break after 'max' iterations</ste:comment> +<ste:mktag name="foreach_limit" mandatory="array|value|max"> + <ste:foreach array="$_tag_parameters[array]" value="$_tag_parameters[value]" counter="i"> + <ste:if> + <ste:cmp var_a="i" op="gte" var_b="_tag_parameters[max]" /> + <ste:then> + <ste:break /> + </ste:then> + </ste:if> + + <ste:if> + $_tag_parameters[counter] + <ste:then> + <ste:set var="$_tag_parameters[counter]">$i</ste:set> + </ste:then> + </ste:if> + <ste:tagcontent /> + </ste:foreach> +</ste:mktag> diff --git a/example/templates/src/master.html b/example/templates/src/master.html new file mode 100644 index 0000000..fe6b1e6 --- /dev/null +++ b/example/templates/src/master.html @@ -0,0 +1,41 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-us" lang="en"> +<head> + <title>?{$title|$title - example|example}</title><ste:comment>If $title given, set title to "$title - example", else "example"</ste:comment> + <style type="text/css"> + * { + font-family: sans-serif; + } + .online { + color: #0a0; + } + .offline { + color: #555; + font-style: italic; + + } + </style> + +</head> +<body> + <h1>example</h1> + + <div id="content"> + <ste:block name="content"> + Default content. + </ste:block> + </div> + <div id="otherstuff"> + <ste:block name="otherstuff"> + <h2>List of users</h2> + <ste:comment>Lets loop through the users...</ste:comment> + <ul> + <ste:foreach array="users" value="user"> + <li class="?{$user[online]|online|offline}">$user[name] ($user[username])</li> + </ste:foreach> + </ul> + </ste:block> + </div> +</body> +</html> |