getolympus/olympus-hera-renderer

Olympus Hera is a bundle used to render all components views through the TWIG template engine.

v0.0.6 2020-03-30 00:06 UTC

This package is auto-updated.

Last update: 2024-10-29 05:47:17 UTC


README

Olympus Hera Renderer is a bundle used to render all components views through the TWIG template engine.

composer require getolympus/olympus-hera-renderer

Olympus Component CodeFactor Grade Packagist Version MIT

Example

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();
    }
}

Initialization

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);

Customization

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);
    }));
});

Release History

See CHANGELOG.md for all details.

Contributing

  1. Fork it (https://github.com/GetOlympus/Hera-Renderer/fork)
  2. Create your feature branch (git checkout -b feature/fooBar)
  3. Commit your changes (git commit -am 'Add some fooBar')
  4. Push to the branch (git push origin feature/fooBar)
  5. Create a new Pull Request

Built with ♥ by Achraf Chouk ~ (c) since a long time.