1. Go to this page and download the library: Download performing/twig-components library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
performing / twig-components example snippets
use Performing\TwigComponents\Configuration;
/** @var \Twig\Environment $twig */
Configuration::make($twig)
->setTemplatesPath('/relative/directory/to/components') // default is 'components'
->setTemplatesExtension('twig') // default is 'twig'
->setup();
// Module.php
if (Craft::$app->request->getIsSiteRequest()) {
Event::on(
Plugins::class,
Plugins::EVENT_AFTER_LOAD_PLUGINS,
function (Event $event) {
$twig = Craft::$app->getView()->getTwig();
\Performing\TwigComponents\Configuration::make($twig)->setup();
}
);
}
// TwigEnvironmentConfigurator.php
use Symfony\Bundle\TwigBundle\DependencyInjection\Configurator\EnvironmentConfigurator;
use Twig\Environment;
use Performing\TwigComponents\Configuration;
final class TwigEnvironmentConfigurator
{
public function __construct(
private EnvironmentConfigurator $decorated
) {}
public function configure(Environment $environment) : void
{
$this->decorated->configure($environment);
Configuration::make($environment)
->setTemplatesPath('/relative/directory/to/components')
->setup();
}
}
public function boot(): void
{
Event::Listen('cms.page.beforeDisplay', function ($controller, $url, $page) {
$twig = $controller->getTwig();
Configuration::make($twig)
->setTemplatesPath('namespace.pluginname::components', hint: true)
->useGlobalContext() // use this to keep Twig context from CMS
->setup();
});
}