mute_runtime_errors = false; # First, lets define some custom tags. # 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. } ); # will repeat its content n times ( 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"] = [ ["name" => "Foo", "username" => "foo", "online" => true], ["name" => "Bar", "username" => "bar", "online" => false], ["name" => "Baz", "username" => "baz", "online" => true] ]; $ste->vars["title"] = "cool"; $ste->vars["articles"] = [ ["author" => "foo", "title" => "cool article", "timestamp" => 1316553353, "excerpt" => "bla", "full" => "blablabla"], ["author" => "bar", "title" => "awesome", "timestamp" => 1316552000, "excerpt" => "...", "full" => ".........."], ["author" => "baz", "title" => " 1316551000, "excerpt" => "...", "full" => ".........."], ["author" => "baz", "title" => "whatever...", "timestamp" => 1316550000, "excerpt" => "...", "full" => ".........."] ]; $ste->vars["foo"] = "baz"; $ste->vars["bar"] = "lol"; $ste->vars["baz"] = ["lol" => "cool"]; # Execute the template and output the result echo $ste->exectemplate("articles.html");