Olympus Hera Renderer is a bundle used to render all components views through the TWIG template engine.
composer require getolympus/olympus-hera-renderer
You can easily use the Hera
renderer to display TWIG template:
namespace MyCustomPackage;
use GetOlympus\Hera\Hera;
class MyPackage
{
protected function displayContent()
{
/**
* Sample extracted from the `Metabox` Zeus-Core component.
* @see https://github.com/GetOlympus/Zeus-Core/blob/master/src/Zeus/Metabox/Metabox.php
*/
// Prepare admin scripts and styles
$assets = [
'scripts' => [],
'styles' => [],
];
$vars = [];
// Display fields
foreach ($fields as $field) {
if (!$field) {
continue;
}
// Update scripts and styles
$fieldassets = $field->assets();
if (!empty($fieldassets)) {
$assets['scripts'] = array_merge($assets['scripts'], $fieldassets['scripts']);
$assets['styles'] = array_merge($assets['styles'], $fieldassets['styles']);
}
$vars['fields'][] = $field->prepare('metabox', $post, 'post');
}
/**
* Outside the loop, you'll get an array with these elements:
*
* $vars = [
* 'fields' => [
* [
* 'context' => 'wordpress',
* 'path' => '/path/to/resources/views',
* 'template' => 'wordpress.html.twig',
* 'vars' => [-- vars used in the target template --]
* ],
* [-- more and more --],
* ]
* ];
*/
// Render view
$render = new Hera('core', 'layouts'.S.'metabox.html.twig', $vars, $assets);
$render->view();
}
}
The Hera
component needs to be initialized by this way:
/**
* Constructor.
*
* @param string $context
* @param string $template
* @param array $vars
* @param array $assets
* @param bool $usecache
*/
new Hera($context, $template, $vars, $assets, $usecache);
Variable | Type | Default value if not set | Details |
---|---|---|---|
context |
String | mandatory | Used by the TWIG template engine to retrieve wanted template |
template |
String | mandatory | TWIG template to load |
vars |
Array | mandatory | List of vars used in the TWIG loaded template |
assets |
Array | [] |
List of assets files to load to render template |
usecache |
Boolean | false |
Define wether to use or not TWIG engine cache system |
If you need to add your custom TWIG functions, you can use the ol_hera_render_functions
action hook:
add_action('ol.hera.render_functions', function ($twig) {
// Example to use the WordPress `get_header()` function through TWIG: {{ get_header(file) }}
$twig->addFunction(new \Twig\TwigFunction('get_header', function ($file = '') {
get_header($file);
}));
});
See CHANGELOG.md for all details.
- Fork it (https://github.com/GetOlympus/Hera-Renderer/fork)
- Create your feature branch (
git checkout -b feature/fooBar
) - Commit your changes (
git commit -am 'Add some fooBar'
) - Push to the branch (
git push origin feature/fooBar
) - Create a new Pull Request
Built with ♥ by Achraf Chouk ~ (c) since a long time.