/** * The hook for template_include to override blade templating. * * @param [type] $template [description] * * @return [type] [description] */ public function path($template) { if ($this->path) { return $this->path; } if (!$template) { return $template; } $template = apply_filters('bladerunner/get_post_template', $template); $views = get_stylesheet_directory(); $cache = self::cache(); if (!file_exists($cache)) { return $template; } $search = [$views, '/', '.blade', '.php']; $replace = ['', '.', '', '']; $file = str_replace($search, $replace, $template); $file = trim($file, '.'); if (!file_exists(get_stylesheet_directory() . '/' . $file . '.blade.php')) { return $template; } $blade = new blade($views, $cache); $view = $blade->view()->make($file); $pathToCompiled = $cache . '/' . md5($view->getPath()) . '.compiled.php'; $wp_debug = defined('WP_DEBUG') && WP_DEBUG; $expired = $wp_debug || !file_exists($pathToCompiled) || $blade->getCompiler()->isExpired($view->getPath()); if ($expired) { $content = $view->render(); ob_start(); echo $content; $content = ob_get_contents(); ob_end_clean(); file_put_contents($pathToCompiled, $content); } $this->path = $pathToCompiled; return $this->path; }
/** * Bootstrap the application events. * * @return void */ public function boot() { $this->publishes([__DIR__ . '/../config/config.php' => config_path('resource.php')]); blade::directive('captureScript', function ($name) { $name = empty($name) ? 'inline' : substr(str_replace('$', '', $name), 1, -1); return "<?php Resource::addScript(ob_get_clean(), '" . $name . "'); ?>"; }); blade::directive('captureStyle', function ($name) { $name = empty($name) ? 'header' : substr(str_replace('$', '', $name), 1, -1); return "<?php Resource::addStyle(ob_get_clean(), '" . $name . "'); ?>"; }); blade::directive('resources', function ($template) { $template = addslashes(substr($template, 1, -1)); return "<?php Resource::controller(['js', 'css'], '{$template}'); ?>"; }); blade::directive('asset', function ($asset) { $asset = addslashes(substr($asset, 1, -1)); return "<?php Resource::container('{$asset}'); ?>"; }); }