diff --git a/doc/Plugins.md b/doc/Plugins.md index 62d06f1c5..24d403e1f 100644 --- a/doc/Plugins.md +++ b/doc/Plugins.md @@ -274,7 +274,11 @@ $b is an array containing $nav from nav.php. ###'template_vars' is called before vars are passed to the template engine to render the page. The registered function can add,change or remove variables passed to template. -$b is the array of vars pased to 'replace_macros()' function. +$b is an array with: + + 'template' => filename of template + 'vars' => array of vars passed to template + Complete list of hook callbacks diff --git a/include/friendica_smarty.php b/include/friendica_smarty.php index b51692675..3c2dc7b91 100644 --- a/include/friendica_smarty.php +++ b/include/friendica_smarty.php @@ -2,6 +2,7 @@ require_once "object/TemplateEngine.php"; require_once("library/Smarty/libs/Smarty.class.php"); +require_once "include/plugin.php"; define('SMARTY3_TEMPLATE_FOLDER','templates'); @@ -39,19 +40,19 @@ class FriendicaSmarty extends Smarty { } return $this->fetch('file:' . $this->filename); } - + } class FriendicaSmartyEngine implements ITemplateEngine { static $name ="smarty3"; - + public function __construct(){ if(!is_writable('view/smarty3/')){ echo "ERROR: folder view/smarty3/ must be writable by webserver."; killme(); } - } - + } + // ITemplateEngine interface public function replace_macros($s, $r) { $template = ''; @@ -59,15 +60,24 @@ class FriendicaSmartyEngine implements ITemplateEngine { $template = $s; $s = new FriendicaSmarty(); } + + // "middleware": inject variables into templates + $arr = [ + "template"=> basename($s->filename), + "vars" => $r + ]; + call_hooks("template_vars", $arr); + $r = $arr['vars']; + foreach($r as $key=>$value) { if($key[0] === '$') { $key = substr($key, 1); } $s->assign($key, $value); } - return $s->parsed($template); + return $s->parsed($template); } - + public function get_template_file($file, $root=''){ $a = get_app(); $template_file = get_template_file($a, SMARTY3_TEMPLATE_FOLDER.'/'.$file, $root); diff --git a/include/text.php b/include/text.php index a738a281f..f89a64a57 100644 --- a/include/text.php +++ b/include/text.php @@ -19,10 +19,6 @@ function replace_macros($s,$r) { $stamp1 = microtime(true); - // "middleware": inject variables into templates - call_hooks("template_vars", $r); - - $a = get_app(); $t = $a->template_engine();