Merge pull request #2016 from fabrixxm/template_vars_hook

Fix template_var hook
2022.09-rc
Tobias Diekershoff 2015-11-06 20:03:38 +01:00
commit ed03a941ed
3 zmienionych plików z 21 dodań i 11 usunięć

Wyświetl plik

@ -274,7 +274,11 @@ $b is an array containing $nav from nav.php.
###'template_vars' ###'template_vars'
is called before vars are passed to the template engine to render the page. 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. 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 Complete list of hook callbacks

Wyświetl plik

@ -2,6 +2,7 @@
require_once "object/TemplateEngine.php"; require_once "object/TemplateEngine.php";
require_once("library/Smarty/libs/Smarty.class.php"); require_once("library/Smarty/libs/Smarty.class.php");
require_once "include/plugin.php";
define('SMARTY3_TEMPLATE_FOLDER','templates'); define('SMARTY3_TEMPLATE_FOLDER','templates');
@ -39,19 +40,19 @@ class FriendicaSmarty extends Smarty {
} }
return $this->fetch('file:' . $this->filename); return $this->fetch('file:' . $this->filename);
} }
} }
class FriendicaSmartyEngine implements ITemplateEngine { class FriendicaSmartyEngine implements ITemplateEngine {
static $name ="smarty3"; static $name ="smarty3";
public function __construct(){ public function __construct(){
if(!is_writable('view/smarty3/')){ if(!is_writable('view/smarty3/')){
echo "<b>ERROR:</b> folder <tt>view/smarty3/</tt> must be writable by webserver."; killme(); echo "<b>ERROR:</b> folder <tt>view/smarty3/</tt> must be writable by webserver."; killme();
} }
} }
// ITemplateEngine interface // ITemplateEngine interface
public function replace_macros($s, $r) { public function replace_macros($s, $r) {
$template = ''; $template = '';
@ -59,15 +60,24 @@ class FriendicaSmartyEngine implements ITemplateEngine {
$template = $s; $template = $s;
$s = new FriendicaSmarty(); $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) { foreach($r as $key=>$value) {
if($key[0] === '$') { if($key[0] === '$') {
$key = substr($key, 1); $key = substr($key, 1);
} }
$s->assign($key, $value); $s->assign($key, $value);
} }
return $s->parsed($template); return $s->parsed($template);
} }
public function get_template_file($file, $root=''){ public function get_template_file($file, $root=''){
$a = get_app(); $a = get_app();
$template_file = get_template_file($a, SMARTY3_TEMPLATE_FOLDER.'/'.$file, $root); $template_file = get_template_file($a, SMARTY3_TEMPLATE_FOLDER.'/'.$file, $root);

Wyświetl plik

@ -19,10 +19,6 @@ function replace_macros($s,$r) {
$stamp1 = microtime(true); $stamp1 = microtime(true);
// "middleware": inject variables into templates
call_hooks("template_vars", $r);
$a = get_app(); $a = get_app();
$t = $a->template_engine(); $t = $a->template_engine();