hypejunction / elgg-twig
Twig Template Rendering for Elgg
Requires
- php: >=7.0
- composer/installers: ~1.0
- hypejunction/elgg-di: *
- twig/twig: ^2.6
This package is auto-updated.
Last update: 2024-12-15 00:21:53 UTC
README
Adds support for twig templates in Elgg
Using Templates
To add a twig template, simply add a file with .twig
extension into your plugin's views, under default
viewtype.
<!-- my_plugins/views/default/test.twig --> <div class="hello">Hello, {{ name }}</div>
To render a template use ``elgg_twig()with or without a view name without
.twig` extension:
$user = elgg_get_logged_in_user_entity(); echo elgg_twig('test', ['name' => $user->getDispayName()];
You can override templates like any other view, but you can not extend them or filter them using hooks.
Development
To simplify development, set environment
config value to development
, otherwise you need to flush caches to reload template changes.
elgg_set_config('environment', 'development');
Globals
Globals available in templates
app
- application dataapp.user
- logged in user entityapp.site
- site entityapp.registrationUrl
- registration URLapp.loginUrl
- login URL
Functions
Function available in templates
echo()
- equivalent ofelgg_echo()
view()
- equivalent ofelgg_view()
assetUrl()
- equivalent ofelgg_get_simplecache_url()
requireJs()
- equivalent ofelgg_require_js()
Notes
I have initially taught elgg_view()
to render twig templates, but it had a negative
performance impact, likely because of a view_vars
hook registered for all views.
Until there is a wildcard hook registration, elgg_twig()
is the way to go,
however it does not allow view vars to be filtered or views to be extended, which in the end
is somewhat a win, because of simplicity.