1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
<?php
# Example program to demonstrate the STE...
require_once(dirname(__FILE__) . "/../steloader.php");
use \kch42\ste;
# 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).
)
);
# Set STE to a more verbose behavior:
$ste->mute_runtime_errors = false;
# 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 ste\RuntimeError("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" => "..........")
);
$ste->vars["foo"] = "baz";
$ste->vars["bar"] = "lol";
$ste->vars["baz"] = array("lol" => "cool");
# Execute the template and output the result
echo $ste->exectemplate("articles.html");
|