First pass at Blade templating

This commit is contained in:
kalenjohnson
2016-12-03 10:27:22 -08:00
parent 3c831356f2
commit 0918597d4a
38 changed files with 957 additions and 181 deletions

View File

@@ -4,6 +4,9 @@ namespace App;
use Roots\Sage\Template;
use Roots\Sage\Template\Wrapper;
use Illuminate\Container\Container;
use Illuminate\Filesystem\Filesystem;
use Roots\Sage\Template\ViewServiceProvider;
/**
* Add <body> classes
@@ -32,11 +35,62 @@ add_filter('excerpt_more', function () {
});
/**
* Use theme wrapper
* Use Blade template engine
*/
add_filter('template_include', function ($main) {
if (!is_string($main) && !(is_object($main) && method_exists($main, '__toString'))) {
return $main;
foreach(['index', '404', 'archive', 'author', 'category', 'tag', 'taxonomy', 'date', 'home', 'front_page', 'page', 'paged', 'search', 'single', 'singular', 'attachment'] as $type) {
add_filter("{$type}_template_hierarchy", function($templates) {
foreach ($templates as $template) {
$templates[] = str_replace('.php', '.blade.php', $template);
}
return $templates;
});
}
add_filter('template_include', function ($template) {
$blade_template = (!strpos($template, '.blade.php')) ? str_replace('.php', '.blade.php', $template) : $template;
$blade_template = locate_template(basename($blade_template));
if (!file_exists($blade_template)) {
return $template;
}
return ((new Template(new Wrapper($main)))->layout());
}, 109);
$container = Container::getInstance();
$container->singleton('files', function () {
return new Filesystem;
});
$provider = new ViewServiceProvider($container);
$provider->register();
$template_engine = $container->make('view');
$template_name = basename(str_replace('.blade', '', $blade_template));
$template_name = str_replace('.php', '', $template_name);
$html = $template_engine->make($template_name, apply_filters('laravel/blade/template_data', []))->render();
if (!$html) {
return $template;
}
echo $html;
return false;
}, 1000);
add_filter('comments_template', function ($theme_template) {
$container = Container::getInstance();
$template_engine = $container->make('view');
$template_name = basename(str_replace('.blade.php', '', $theme_template));
$html = $template_engine->make('partials/'.$template_name, []);
var_dump($template_engine->exists('partials/'.$template_name));
$engine = $html->getEngine();
$compiler = $engine->getCompiler();
$template = $compiler->getCompiledPath($compiler->getPath());
if ($compiler->isExpired($template)) {
$compiler->compile($theme_template);
}
return $template;
});