Browse Source

Create pico_twig.php

Trying to decouple Twig from core.
SimoneS93 10 years ago
parent
commit
0e74a7b8a3
1 changed files with 42 additions and 0 deletions
  1. 42 0
      plugins/pico_twig.php

+ 42 - 0
plugins/pico_twig.php

@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * Use Twig for templates
+ * @author Simone Salerno
+ * @version 1.0.0
+ * @license MIT 
+ */
+class pico_twig {
+    
+    /**
+     * Apply Twig template
+     * @param string $output
+     * @param array $settings
+     * @param array $data
+     * @param array $meta 
+     */
+    public function apply_template(&$output, array $settings, array $data, array $meta) {
+        Twig_Autoloader::register();
+        $loader = new Twig_Loader_Filesystem(THEMES_DIR . $settings['theme']);
+        $twig = new Twig_Environment($loader, $settings['twig_config']);
+        $twig->addExtension(new Twig_Extension_Debug());
+        $twig_vars = array(
+                'config' => $settings,
+                'base_dir' => rtrim(ROOT_DIR, '/'),
+                'base_url' => $settings['base_url'],
+                'theme_dir' => THEMES_DIR . $settings['theme'],
+                'theme_url' => $settings['base_url'] .'/'. basename(THEMES_DIR) .'/'. $settings['theme'],
+                'site_title' => $settings['site_title'],
+                'meta' => $meta,
+                'content' => $data['content'],
+                'pages' => $data['pages'],
+                'prev_page' => $data['prev_page'],
+                'current_page' => $data['current_page'],
+                'next_page' => $data['next_page'],
+                'is_front_page' => $data['url'] ? false : true,
+        );
+
+        $template = (isset($meta['template']) && $meta['template']) ? $meta['template'] : 'index';
+        $output = $twig->render($template .'.html', $twig_vars);
+    }
+}