]> git.bts.cx Git - cx.git/blob - cx/lib/template.php
Don't break when there's no hero image
[cx.git] / cx / lib / template.php
1 <?php
2
3 function cx_template_render($class, $name, $variables = null) {
4 global $cx_template_base, $cx_template_content;
5
6 $base_template = null;
7
8 $output = '';
9 while ($name != null) {
10 $segments = array(CX_PATH, 'templates', $class, $name . '.php');
11 $path = join(DIRECTORY_SEPARATOR, $segments);
12
13 $base_template = null;
14 $base_template_variables = null;
15
16 $cx_template_base_previous = $cx_template_base;
17 $cx_template_base = function($name, $base_variables) use (&$base_template, &$base_template_variables) {
18 $base_template = $name;
19 $base_template_variables = $base_variables;
20 };
21
22 $cx_template_content_previous = $cx_template_content;
23 $cx_template_content = function() use ($output) {
24 return $output;
25 };
26
27 cx_require('lib', 'url.php'); // For templates
28
29 if ($variables != null) {
30 extract($variables);
31 }
32
33 ob_start();
34 include($path);
35 $output = ob_get_contents();
36 ob_end_clean();
37
38 $cx_template_base = $cx_template_base_previous;
39 $cx_template_content = $cx_template_content_previous;
40
41 $name = $base_template;
42 $variables = $base_template_variables;
43 }
44
45 return $output;
46 }
47
48 function cx_template_base($name, $variables = null) {
49 global $cx_template_base;
50 $cx_template_base($name, $variables);
51 }
52
53 function cx_template_content() {
54 global $cx_template_content;
55 return $cx_template_content();
56 }