Twig \ Error \ LoaderError
Unable to find template "@nucleus/content/.html.twig" (looked into: /www/s/y/u85585/public_html/_sub/sth02/media/gantry5/engines/nucleus/templates). Twig\Error\LoaderError thrown with message "Unable to find template "@nucleus/content/.html.twig" (looked into: /www/s/y/u85585/public_html/_sub/sth02/media/gantry5/engines/nucleus/templates)." Stacktrace: #31 Twig\Error\LoaderError in /www/s/y/u85585/public_html/_sub/sth02/libraries/gantry5/compat/vendor/twig/twig/src/Loader/FilesystemLoader.php:265 #30 Twig\Loader\FilesystemLoader:findTemplate in /www/s/y/u85585/public_html/_sub/sth02/libraries/gantry5/compat/vendor/twig/twig/src/Loader/FilesystemLoader.php:161 #29 Twig\Loader\FilesystemLoader:getCacheKey in /www/s/y/u85585/public_html/_sub/sth02/libraries/gantry5/compat/vendor/twig/twig/src/Environment.php:351 #28 Twig\Environment:getTemplateClass in /www/s/y/u85585/public_html/_sub/sth02/libraries/gantry5/compat/vendor/twig/twig/src/Environment.php:445 #27 Twig\Environment:loadTemplate in /www/s/y/u85585/public_html/_sub/sth02/libraries/gantry5/compat/vendor/twig/twig/src/Environment.php:423 #26 Twig\Environment:load in /www/s/y/u85585/public_html/_sub/sth02/libraries/gantry5/compat/vendor/twig/twig/src/Environment.php:384 #25 Twig\Environment:render in /www/s/y/u85585/public_html/_sub/sth02/libraries/gantry5/src/classes/Gantry/Component/Theme/AbstractTheme.php:176 #24 Gantry\Component\Theme\AbstractTheme:render in /www/s/y/u85585/public_html/_sub/sth02/libraries/gantry5/src/classes/Gantry/Component/Theme/ThemeTrait.php:825 #23 Gantry\Framework\Theme:getContent in /www/s/y/u85585/public_html/_sub/sth02/modules/mod_gantry5_particle/helper.php:141 #22 ModGantry5ParticleHelper:render in /www/s/y/u85585/public_html/_sub/sth02/modules/mod_gantry5_particle/helper.php:158 #21 ModGantry5ParticleHelper:cache in /www/s/y/u85585/public_html/_sub/sth02/libraries/src/Cache/Controller/CallbackController.php:173 #20 call_user_func_array in /www/s/y/u85585/public_html/_sub/sth02/libraries/src/Cache/Controller/CallbackController.php:173 #19 Joomla\CMS\Cache\Controller\CallbackController:get in /www/s/y/u85585/public_html/_sub/sth02/libraries/src/Helper/ModuleHelper.php:566 #18 Joomla\CMS\Helper\ModuleHelper:moduleCache in /www/s/y/u85585/public_html/_sub/sth02/modules/mod_gantry5_particle/helper.php:169 #17 ModGantry5ParticleHelper:moduleCache in /www/s/y/u85585/public_html/_sub/sth02/modules/mod_gantry5_particle/mod_gantry5_particle.php:53 #16 include in /www/s/y/u85585/public_html/_sub/sth02/libraries/src/Helper/ModuleHelper.php:200 #15 Joomla\CMS\Helper\ModuleHelper:renderModule in /www/s/y/u85585/public_html/_sub/sth02/libraries/src/Document/Renderer/Html/ModuleRenderer.php:98 #14 Joomla\CMS\Document\Renderer\Html\ModuleRenderer:render in /www/s/y/u85585/public_html/_sub/sth02/plugins/content/loadmodule/loadmodule.php:243 #13 PlgContentLoadmodule:_loadid in /www/s/y/u85585/public_html/_sub/sth02/plugins/content/loadmodule/loadmodule.php:141 #12 PlgContentLoadmodule:onContentPrepare in /www/s/y/u85585/public_html/_sub/sth02/libraries/joomla/event/event.php:70 #11 JEvent:update in /www/s/y/u85585/public_html/_sub/sth02/libraries/joomla/event/dispatcher.php:160 #10 JEventDispatcher:trigger in /www/s/y/u85585/public_html/_sub/sth02/components/com_content/views/category/view.html.php:113 #9 ContentViewCategory:display in /www/s/y/u85585/public_html/_sub/sth02/libraries/src/MVC/Controller/BaseController.php:664 #8 Joomla\CMS\MVC\Controller\BaseController:display in /www/s/y/u85585/public_html/_sub/sth02/components/com_content/controller.php:118 #7 ContentController:display in /www/s/y/u85585/public_html/_sub/sth02/libraries/src/MVC/Controller/BaseController.php:702 #6 Joomla\CMS\MVC\Controller\BaseController:execute in /www/s/y/u85585/public_html/_sub/sth02/components/com_content/content.php:43 #5 require_once in /www/s/y/u85585/public_html/_sub/sth02/libraries/src/Component/ComponentHelper.php:402 #4 Joomla\CMS\Component\ComponentHelper:executeComponent in /www/s/y/u85585/public_html/_sub/sth02/libraries/src/Component/ComponentHelper.php:377 #3 Joomla\CMS\Component\ComponentHelper:renderComponent in /www/s/y/u85585/public_html/_sub/sth02/libraries/src/Application/SiteApplication.php:194 #2 Joomla\CMS\Application\SiteApplication:dispatch in /www/s/y/u85585/public_html/_sub/sth02/libraries/src/Application/SiteApplication.php:233 #1 Joomla\CMS\Application\SiteApplication:doExecute in /www/s/y/u85585/public_html/_sub/sth02/libraries/src/Application/CMSApplication.php:225 #0 Joomla\CMS\Application\CMSApplication:execute in /www/s/y/u85585/public_html/_sub/sth02/index.php:49
Stack frames (32)
31
Twig\Error\LoaderError
/compat/vendor/twig/twig/src/Loader/FilesystemLoader.php265
30
Twig\Loader\FilesystemLoader findTemplate
/compat/vendor/twig/twig/src/Loader/FilesystemLoader.php161
29
Twig\Loader\FilesystemLoader getCacheKey
/compat/vendor/twig/twig/src/Environment.php351
28
Twig\Environment getTemplateClass
/compat/vendor/twig/twig/src/Environment.php445
27
Twig\Environment loadTemplate
/compat/vendor/twig/twig/src/Environment.php423
26
Twig\Environment load
/compat/vendor/twig/twig/src/Environment.php384
25
Twig\Environment render
/src/classes/Gantry/Component/Theme/AbstractTheme.php176
24
Gantry\Component\Theme\AbstractTheme render
/src/classes/Gantry/Component/Theme/ThemeTrait.php825
23
Gantry\Framework\Theme getContent
/www/s/y/u85585/public_html/_sub/sth02/modules/mod_gantry5_particle/helper.php141
22
ModGantry5ParticleHelper render
/www/s/y/u85585/public_html/_sub/sth02/modules/mod_gantry5_particle/helper.php158
21
ModGantry5ParticleHelper cache
/www/s/y/u85585/public_html/_sub/sth02/libraries/src/Cache/Controller/CallbackController.php173
20
call_user_func_array
/www/s/y/u85585/public_html/_sub/sth02/libraries/src/Cache/Controller/CallbackController.php173
19
Joomla\CMS\Cache\Controller\CallbackController get
/www/s/y/u85585/public_html/_sub/sth02/libraries/src/Helper/ModuleHelper.php566
18
Joomla\CMS\Helper\ModuleHelper moduleCache
/www/s/y/u85585/public_html/_sub/sth02/modules/mod_gantry5_particle/helper.php169
17
ModGantry5ParticleHelper moduleCache
/www/s/y/u85585/public_html/_sub/sth02/modules/mod_gantry5_particle/mod_gantry5_particle.php53
16
include
/www/s/y/u85585/public_html/_sub/sth02/libraries/src/Helper/ModuleHelper.php200
15
Joomla\CMS\Helper\ModuleHelper renderModule
/www/s/y/u85585/public_html/_sub/sth02/libraries/src/Document/Renderer/Html/ModuleRenderer.php98
14
Joomla\CMS\Document\Renderer\Html\ModuleRenderer render
/www/s/y/u85585/public_html/_sub/sth02/plugins/content/loadmodule/loadmodule.php243
13
PlgContentLoadmodule _loadid
/www/s/y/u85585/public_html/_sub/sth02/plugins/content/loadmodule/loadmodule.php141
12
PlgContentLoadmodule onContentPrepare
/www/s/y/u85585/public_html/_sub/sth02/libraries/joomla/event/event.php70
11
JEvent update
/www/s/y/u85585/public_html/_sub/sth02/libraries/joomla/event/dispatcher.php160
10
JEventDispatcher trigger
/www/s/y/u85585/public_html/_sub/sth02/components/com_content/views/category/view.html.php113
9
ContentViewCategory display
/www/s/y/u85585/public_html/_sub/sth02/libraries/src/MVC/Controller/BaseController.php664
8
Joomla\CMS\MVC\Controller\BaseController display
/www/s/y/u85585/public_html/_sub/sth02/components/com_content/controller.php118
7
ContentController display
/www/s/y/u85585/public_html/_sub/sth02/libraries/src/MVC/Controller/BaseController.php702
6
Joomla\CMS\MVC\Controller\BaseController execute
/www/s/y/u85585/public_html/_sub/sth02/components/com_content/content.php43
5
require_once
/www/s/y/u85585/public_html/_sub/sth02/libraries/src/Component/ComponentHelper.php402
4
Joomla\CMS\Component\ComponentHelper executeComponent
/www/s/y/u85585/public_html/_sub/sth02/libraries/src/Component/ComponentHelper.php377
3
Joomla\CMS\Component\ComponentHelper renderComponent
/www/s/y/u85585/public_html/_sub/sth02/libraries/src/Application/SiteApplication.php194
2
Joomla\CMS\Application\SiteApplication dispatch
/www/s/y/u85585/public_html/_sub/sth02/libraries/src/Application/SiteApplication.php233
1
Joomla\CMS\Application\SiteApplication doExecute
/www/s/y/u85585/public_html/_sub/sth02/libraries/src/Application/CMSApplication.php225
0
Joomla\CMS\Application\CMSApplication execute
/www/s/y/u85585/public_html/_sub/sth02/index.php49
            if (!$this->isAbsolutePath($path)) {
                $path = $this->rootPath.$path;
            }
 
            if (is_file($path.'/'.$shortname)) {
                if (false !== $realpath = realpath($path.'/'.$shortname)) {
                    return $this->cache[$name] = $realpath;
                }
 
                return $this->cache[$name] = $path.'/'.$shortname;
            }
        }
 
        $this->errorCache[$name] = sprintf('Unable to find template "%s" (looked into: %s).', $name, implode(', ', $this->paths[$namespace]));
 
        if (!$throw) {
            return false;
        }
 
        throw new LoaderError($this->errorCache[$name]);
    }
 
    protected function parseName($name, $default = self::MAIN_NAMESPACE)
    {
        if (isset($name[0]) && '@' == $name[0]) {
            if (false === $pos = strpos($name, '/')) {
                throw new LoaderError(sprintf('Malformed namespaced template name "%s" (expecting "@namespace/template_name").', $name));
            }
 
            $namespace = substr($name, 1, $pos - 1);
            $shortname = substr($name, $pos + 1);
 
            return [$namespace, $shortname];
        }
 
        return [$default, $name];
    }
 
    protected function normalizeName($name)
    {
 
        if (null === ($path = $this->findTemplate($name)) || false === $path) {
            return '';
        }
 
        return file_get_contents($path);
    }
 
    public function getSourceContext($name)
    {
        if (null === ($path = $this->findTemplate($name)) || false === $path) {
            return new Source('', $name, '');
        }
 
        return new Source(file_get_contents($path), $name, $path);
    }
 
    public function getCacheKey($name)
    {
        if (null === ($path = $this->findTemplate($name)) || false === $path) {
            return '';
        }
        $len = \strlen($this->rootPath);
        if (0 === strncmp($this->rootPath, $path, $len)) {
            return substr($path, $len);
        }
 
        return $path;
    }
 
    public function exists($name)
    {
        $name = $this->normalizeName($name);
 
        if (isset($this->cache[$name])) {
            return true;
        }
 
        try {
            return null !== ($path = $this->findTemplate($name, false)) && false !== $path;
    /**
     * Gets the template class associated with the given string.
     *
     * The generated template class is based on the following parameters:
     *
     *  * The cache key for the given template;
     *  * The currently enabled extensions;
     *  * Whether the Twig C extension is available or not;
     *  * PHP version;
     *  * Twig version;
     *  * Options with what environment was created.
     *
     * @param string   $name  The name for which to calculate the template class name
     * @param int|null $index The index if it is an embedded template
     *
     * @return string The template class name
     */
    public function getTemplateClass($name, $index = null)
    {
        $key = $this->getLoader()->getCacheKey($name).$this->optionsHash;
 
        return $this->templateClassPrefix.hash('sha256', $key).(null === $index ? '' : '___'.$index);
    }
 
    /**
     * Gets the template class prefix.
     *
     * @return string The template class prefix
     *
     * @deprecated since 1.22 (to be removed in 2.0)
     */
    public function getTemplateClassPrefix()
    {
        @trigger_error(sprintf('The %s method is deprecated since version 1.22 and will be removed in Twig 2.0.', __METHOD__), \E_USER_DEPRECATED);
 
        return $this->templateClassPrefix;
    }
 
    /**
     * Renders a template.
    /**
     * Loads a template internal representation.
     *
     * This method is for internal use only and should never be called
     * directly.
     *
     * @param string $name  The template name
     * @param int    $index The index if it is an embedded template
     *
     * @return \Twig_TemplateInterface A template instance representing the given template name
     *
     * @throws LoaderError  When the template cannot be found
     * @throws RuntimeError When a previously generated cache is corrupted
     * @throws SyntaxError  When an error occurred during compilation
     *
     * @internal
     */
    public function loadTemplate($name, $index = null)
    {
        return $this->loadClass($this->getTemplateClass($name), $name, $index);
    }
 
    /**
     * @internal
     */
    public function loadClass($cls, $name, $index = null)
    {
        $mainCls = $cls;
        if (null !== $index) {
            $cls .= '___'.$index;
        }
 
        if (isset($this->loadedTemplates[$cls])) {
            return $this->loadedTemplates[$cls];
        }
 
        if (!class_exists($cls, false)) {
            if ($this->bcGetCacheFilename) {
                $key = $this->getCacheFilename($name);
            } else {
     *
     * @param string|TemplateWrapper|\Twig\Template $name The template name
     *
     * @throws LoaderError  When the template cannot be found
     * @throws RuntimeError When a previously generated cache is corrupted
     * @throws SyntaxError  When an error occurred during compilation
     *
     * @return TemplateWrapper
     */
    public function load($name)
    {
        if ($name instanceof TemplateWrapper) {
            return $name;
        }
 
        if ($name instanceof Template) {
            return new TemplateWrapper($this, $name);
        }
 
        return new TemplateWrapper($this, $this->loadTemplate($name));
    }
 
    /**
     * Loads a template internal representation.
     *
     * This method is for internal use only and should never be called
     * directly.
     *
     * @param string $name  The template name
     * @param int    $index The index if it is an embedded template
     *
     * @return \Twig_TemplateInterface A template instance representing the given template name
     *
     * @throws LoaderError  When the template cannot be found
     * @throws RuntimeError When a previously generated cache is corrupted
     * @throws SyntaxError  When an error occurred during compilation
     *
     * @internal
     */
    public function loadTemplate($name, $index = null)
        @trigger_error(sprintf('The %s method is deprecated since version 1.22 and will be removed in Twig 2.0.', __METHOD__), \E_USER_DEPRECATED);
 
        return $this->templateClassPrefix;
    }
 
    /**
     * Renders a template.
     *
     * @param string|TemplateWrapper $name    The template name
     * @param array                  $context An array of parameters to pass to the template
     *
     * @return string The rendered template
     *
     * @throws LoaderError  When the template cannot be found
     * @throws SyntaxError  When an error occurred during compilation
     * @throws RuntimeError When an error occurred during rendering
     */
    public function render($name, array $context = [])
    {
        return $this->load($name)->render($context);
    }
 
    /**
     * Displays a template.
     *
     * @param string|TemplateWrapper $name    The template name
     * @param array                  $context An array of parameters to pass to the template
     *
     * @throws LoaderError  When the template cannot be found
     * @throws SyntaxError  When an error occurred during compilation
     * @throws RuntimeError When an error occurred during rendering
     */
    public function display($name, array $context = [])
    {
        $this->load($name)->display($context);
    }
 
    /**
     * Loads a template.
     *
 
            $this->renderer = $this->extendTwig($twig, $loader);
        }
 
        return $this->renderer;
    }
 
    /**
     * Render a template file by using given context.
     *
     * @param string $file
     * @param array $context
     * @return string
     */
    public function render($file, array $context = [])
    {
        // Include Gantry specific things to the context.
        $context = $this->getContext($context);
 
        return $this->renderer()->render($file, $context);
    }
 
    /**
     * Compile and render twig string.
     *
     * @param string $string
     * @param array $context
     * @return string
     */
    public function compile($string, array $context = [])
    {
        $renderer = $this->renderer();
        $template = $renderer->createTemplate($string);
 
        // Include Gantry specific things to the context.
        $context = $this->getContext($context);
 
        return $template->render($context);
    }
 
            $file = PhpFile::instance($filename);
            if ($file->exists()) {
                try {
                    return ContentBlock::fromArray((array) $file->content());
                } catch (\Exception $e) {
                    // Invalid cache, continue to rendering.
                    if (\GANTRY_DEBUGGER) {
                        Debugger::addMessage(sprintf('Failed to load %s %s cache', $item->type, $item->id), 'debug');
                    }
                }
            }
        }
 
        // Create new document context for assets.
        $context = $this->getContext(['segment' => $item, 'enabled' => 1, 'particle' => $particle] + $options);
 
        /** @var Document $document */
        $document = $gantry['document'];
        $document::push();
        $html = trim($this->render("@nucleus/content/{$item->type}.html.twig", $context));
        $content = $document::pop()->setContent($html);
 
        if (isset($file)) {
            // Save HTML and assets into the cache.
            if (\GANTRY_DEBUGGER) {
                Debugger::addMessage(sprintf('Caching %s %s', $item->type, $item->id), 'debug');
            }
 
            $file->save($content->toArray());
        }
 
        return $content;
    }
}
 
            }
        }
 
        $id = static::getIdentifier($particle, $module->id);
        $object = (object) array(
            'id' => $id,
            'type' => $type,
            'subtype' => $particle,
            'attributes' => $data['options']['particle'],
        );
 
        $context = array(
            'gantry' => $gantry,
            'inContent' => true,
            'ajax' => $params->get('ajax'),
        );
 
        /** @var Theme $theme */
        $theme = $gantry['theme'];
        $block = $theme->getContent($object, $context);
 
        // Create outer block with the particle ID for AJAX calls.
        $outer = \Gantry\Component\Content\Block\HtmlBlock::create();
        $outer->setContent('<div id="' . $id . '-particle" class="g-particle">' . $block->getToken() . '</div>');
        $outer->addBlock($block);
 
        return $outer;
    }
 
    /**
     * @param $module
     * @param $params
     * @return array
     */
    public static function cache($module, $params)
    {
        return static::render($module, $params)->toArray();
    }
 
    /**
        /** @var Theme $theme */
        $theme = $gantry['theme'];
        $block = $theme->getContent($object, $context);
 
        // Create outer block with the particle ID for AJAX calls.
        $outer = \Gantry\Component\Content\Block\HtmlBlock::create();
        $outer->setContent('<div id="' . $id . '-particle" class="g-particle">' . $block->getToken() . '</div>');
        $outer->addBlock($block);
 
        return $outer;
    }
 
    /**
     * @param $module
     * @param $params
     * @return array
     */
    public static function cache($module, $params)
    {
        return static::render($module, $params)->toArray();
    }
 
    /**
     * @param $module
     * @param $params
     * @param $cacheparams
     * @return ContentBlockInterface|null
     */
    public static function moduleCache($module, $params, $cacheparams)
    {
        $block = (array) ModuleHelper::moduleCache($module, $params, $cacheparams);
        try {
            return $block ? HtmlBlock::fromArray($block) : null;
        } catch (Exception $e) {
            return null;
        }
    }
 
    /**
     * @param string $particle
            if (method_exists($document, 'getHeadData'))
            {
                $coptions['headerbefore'] = $document->getHeadData();
            }
 
            $coptions['modulemode'] = 1;
        }
        else
        {
            $coptions['modulemode'] = 0;
        }
 
        $coptions['nopathway'] = isset($woptions['nopathway']) ? $woptions['nopathway'] : 1;
        $coptions['nohead']    = isset($woptions['nohead'])    ? $woptions['nohead'] : 1;
        $coptions['nomodules'] = isset($woptions['nomodules']) ? $woptions['nomodules'] : 1;
 
        ob_start();
        ob_implicit_flush(false);
 
        $result = call_user_func_array($callback, $referenceArgs);
        $output = ob_get_clean();
 
        $data = array('result' => $result);
 
        if ($wrkarounds)
        {
            $data['output'] = Cache::setWorkarounds($output, $coptions);
        }
        else
        {
            $data['output'] = $output;
        }
 
        // Store the cache data
        $this->cache->store(serialize($data), $id);
 
        if ($locktest->locked === true)
        {
            $this->cache->unlock($id);
        }
            if (method_exists($document, 'getHeadData'))
            {
                $coptions['headerbefore'] = $document->getHeadData();
            }
 
            $coptions['modulemode'] = 1;
        }
        else
        {
            $coptions['modulemode'] = 0;
        }
 
        $coptions['nopathway'] = isset($woptions['nopathway']) ? $woptions['nopathway'] : 1;
        $coptions['nohead']    = isset($woptions['nohead'])    ? $woptions['nohead'] : 1;
        $coptions['nomodules'] = isset($woptions['nomodules']) ? $woptions['nomodules'] : 1;
 
        ob_start();
        ob_implicit_flush(false);
 
        $result = call_user_func_array($callback, $referenceArgs);
        $output = ob_get_clean();
 
        $data = array('result' => $result);
 
        if ($wrkarounds)
        {
            $data['output'] = Cache::setWorkarounds($output, $coptions);
        }
        else
        {
            $data['output'] = $output;
        }
 
        // Store the cache data
        $this->cache->store(serialize($data), $id);
 
        if ($locktest->locked === true)
        {
            $this->cache->unlock($id);
        }
        $cacheDisabled = $moduleparams->get('cache') === 0 || $moduleparams->get('cache') === '0';
 
        if ($ownCacheDisabled || $cacheDisabled || $conf->get('caching') == 0 || $user->get('id'))
        {
            $cache->setCaching(false);
        }
 
        // Module cache is set in seconds, global cache in minutes, setLifeTime works in minutes
        $cache->setLifeTime($moduleparams->get('cache_time', $conf->get('cachetime') * 60) / 60);
 
        $wrkaroundoptions = array('nopathway' => 1, 'nohead' => 0, 'nomodules' => 1, 'modulemode' => 1, 'mergehead' => 1);
 
        $wrkarounds = true;
        $view_levels = md5(serialize($user->getAuthorisedViewLevels()));
 
        switch ($cacheparams->cachemode)
        {
            case 'id':
                $ret = $cache->get(
                    array($cacheparams->class, $cacheparams->method),
                    $cacheparams->methodparams,
                    $cacheparams->modeparams,
                    $wrkarounds,
                    $wrkaroundoptions
                );
                break;
 
            case 'safeuri':
                $secureid = null;
 
                if (is_array($cacheparams->modeparams))
                {
                    $input   = \JFactory::getApplication()->input;
                    $uri     = $input->getArray();
                    $safeuri = new \stdClass;
                    $noHtmlFilter = \JFilterInput::getInstance();
 
                    foreach ($cacheparams->modeparams as $key => $value)
                    {
                        // Use int filter for id/catid to clean out spamy slugs
 
    /**
     * @param $module
     * @param $params
     * @return array
     */
    public static function cache($module, $params)
    {
        return static::render($module, $params)->toArray();
    }
 
    /**
     * @param $module
     * @param $params
     * @param $cacheparams
     * @return ContentBlockInterface|null
     */
    public static function moduleCache($module, $params, $cacheparams)
    {
        $block = (array) ModuleHelper::moduleCache($module, $params, $cacheparams);
        try {
            return $block ? HtmlBlock::fromArray($block) : null;
        } catch (Exception $e) {
            return null;
        }
    }
 
    /**
     * @param string $particle
     * @param string $id
     * @return string
     */
    public static function getIdentifier($particle, $id)
    {
        return "module-{$particle}-{$id}";
    }
}
 
 
$gantry = Gantry::instance();
 
if (\GANTRY_DEBUGGER) {
    Debugger::startTimer("module-{$module->id}", "Rendering Particle Module #{$module->id}");
}
 
// Set up caching.
$cacheid = md5($module->id);
 
$cacheparams = (object) [
    'cachemode'    => 'id',
    'class'        => 'ModGantry5ParticleHelper',
    'method'       => 'cache',
    'methodparams' => [$module, $params],
    'modeparams'   => $cacheid
];
 
/** @var HtmlBlock $block */
$block = ModGantry5ParticleHelper::moduleCache($module, $params, $cacheparams);
if (null === $block) {
    $block = ModGantry5ParticleHelper::render($module, $params);
}
 
/** @var Document $document */
$document = $gantry['document'];
$document->addBlock($block);
 
echo $block->toString();
 
if (\GANTRY_DEBUGGER) {
    Debugger::stopTimer("module-{$module->id}");
}
 
        if (file_exists($path))
        {
            $lang = \JFactory::getLanguage();
 
            $coreLanguageDirectory      = JPATH_BASE;
            $extensionLanguageDirectory = dirname($path);
 
            $langPaths = $lang->getPaths();
 
            // Only load the module's language file if it hasn't been already
            if (!$langPaths || (!isset($langPaths[$coreLanguageDirectory]) && !isset($langPaths[$extensionLanguageDirectory])))
            {
                // 1.5 or Core then 1.6 3PD
                $lang->load($module->module, $coreLanguageDirectory, null, false, true) ||
                    $lang->load($module->module, $extensionLanguageDirectory, null, false, true);
            }
 
            $content = '';
            ob_start();
            include $path;
            $module->content = ob_get_contents() . $content;
            ob_end_clean();
        }
 
        // Load the module chrome functions
        if (!$chrome)
        {
            $chrome = array();
        }
 
        include_once JPATH_THEMES . '/system/html/modules.php';
        $chromePath = JPATH_THEMES . '/' . $template . '/html/modules.php';
 
        if (!isset($chrome[$chromePath]))
        {
            if (file_exists($chromePath))
            {
                include_once $chromePath;
            }
 
            $module = clone $module;
            $module->params = (string) $params;
        }
 
        // Default for compatibility purposes. Set cachemode parameter or use JModuleHelper::moduleCache from within the module instead
        $cachemode = $params->get('cachemode', 'oldstatic');
 
        if ($params->get('cache', 0) == 1 && \JFactory::getConfig()->get('caching') >= 1 && $cachemode != 'id' && $cachemode != 'safeuri')
        {
            // Default to itemid creating method and workarounds on
            $cacheparams = new \stdClass;
            $cacheparams->cachemode = $cachemode;
            $cacheparams->class = 'JModuleHelper';
            $cacheparams->method = 'renderModule';
            $cacheparams->methodparams = array($module, $attribs);
 
            return ModuleHelper::ModuleCache($module, $params, $cacheparams);
        }
 
        return ModuleHelper::renderModule($module, $attribs);
    }
}
 
     * Loads and renders the module
     *
     * @param   string  $id  The id of the module
     *
     * @return  mixed
     *
     * @since   3.9.0
     */
    protected function _loadid($id)
    {
        self::$modules[$id] = '';
        $document = JFactory::getDocument();
        $renderer = $document->loadRenderer('module');
        $modules  = JModuleHelper::getModuleById($id);
        $params   = array('style' => 'none');
        ob_start();
 
        if ($modules->id > 0)
        {
            echo $renderer->render($modules, $params);
        }
 
        self::$modules[$id] = ob_get_clean();
 
        return self::$modules[$id];
    }
}
 
                // We should replace only first occurrence in order to allow positions with the same name to regenerate their content:
                if (($start = strpos($article->text, $matchmod[0])) !== false)
                {
                    $article->text = substr_replace($article->text, $output, $start, strlen($matchmod[0]));
                }
 
                $stylemod = $this->params->def('style', 'none');
            }
        }
 
        // Find all instances of plugin and put in $matchesmodid for loadmoduleid
        preg_match_all($regexmodid, $article->text, $matchesmodid, PREG_SET_ORDER);
 
        // If no matches, skip this
        if ($matchesmodid)
        {
            foreach ($matchesmodid as $match)
            {
                $id     = trim($match[1]);
                $output = $this->_loadid($id);
 
                // We should replace only first occurrence in order to allow positions with the same name to regenerate their content:
                if (($start = strpos($article->text, $match[0])) !== false)
                {
                    $article->text = substr_replace($article->text, $output, $start, strlen($match[0]));
                }
 
                $style = $this->params->def('style', 'none');
            }
        }
    }
 
    /**
     * Loads and renders the module
     *
     * @param   string  $position  The position assigned to the module
     * @param   string  $style     The style assigned to the module
     *
     * @return  mixed
     *
     * @param   array  &$args  Arguments
     *
     * @return  mixed  Routine return value
     *
     * @since   1.5
     */
    public function update(&$args)
    {
        // First let's get the event from the argument array.  Next we will unset the
        // event argument as it has no bearing on the method to handle the event.
        $event = $args['event'];
        unset($args['event']);
 
        /*
         * If the method to handle an event exists, call it and return its return
         * value.  If it does not exist, return null.
         */
        if (method_exists($this, $event))
        {
            return call_user_func_array(array($this, $event), array_values($args));
        }
    }
}
 
        if (!isset($this->_methods[$event]) || empty($this->_methods[$event]))
        {
            // No Plugins Associated To Event!
            return $result;
        }
 
        // Loop through all plugins having a method matching our event
        foreach ($this->_methods[$event] as $key)
        {
            // Check if the plugin is present.
            if (!isset($this->_observers[$key]))
            {
                continue;
            }
 
            // Fire the event for an object based observer.
            if (is_object($this->_observers[$key]))
            {
                $args['event'] = $event;
                $value = $this->_observers[$key]->update($args);
            }
            // Fire the event for a function based observer.
            elseif (is_array($this->_observers[$key]))
            {
                $value = call_user_func_array($this->_observers[$key]['handler'], array_values($args));
            }
 
            if (isset($value))
            {
                $result[] = $value;
            }
        }
 
        return $result;
    }
 
    /**
     * Attach an observer object
     *
     * @param   object  $observer  An observer object to attach
            $item->slug = $item->alias ? ($item->id . ':' . $item->alias) : $item->id;
 
            $item->parent_slug = $item->parent_alias ? ($item->parent_id . ':' . $item->parent_alias) : $item->parent_id;
 
            // No link for ROOT category
            if ($item->parent_alias === 'root')
            {
                $item->parent_slug = null;
            }
 
            $item->catslug = $item->category_alias ? ($item->catid . ':' . $item->category_alias) : $item->catid;
            $item->event   = new stdClass;
 
            // Old plugins: Ensure that text property is available
            if (!isset($item->text))
            {
                $item->text = $item->introtext;
            }
 
            $dispatcher->trigger('onContentPrepare', array ('com_content.category', &$item, &$item->params, 0));
 
            // Old plugins: Use processed text as introtext
            $item->introtext = $item->text;
 
            $results = $dispatcher->trigger('onContentAfterTitle', array('com_content.category', &$item, &$item->params, 0));
            $item->event->afterDisplayTitle = trim(implode("\n", $results));
 
            $results = $dispatcher->trigger('onContentBeforeDisplay', array('com_content.category', &$item, &$item->params, 0));
            $item->event->beforeDisplayContent = trim(implode("\n", $results));
 
            $results = $dispatcher->trigger('onContentAfterDisplay', array('com_content.category', &$item, &$item->params, 0));
            $item->event->afterDisplayContent = trim(implode("\n", $results));
        }
 
        // For blog layouts, preprocess the breakdown of leading, intro and linked articles.
        // This makes it much easier for the designer to just interrogate the arrays.
        if ($params->get('layout_type') === 'blog' || $this->getLayout() === 'blog')
        {
            foreach ($this->items as $i => $item)
            {
                    $registeredurlparams->$key = $value;
                }
 
                $app->registeredurlparams = $registeredurlparams;
            }
 
            try
            {
                /** @var \JCacheControllerView $cache */
                $cache = \JFactory::getCache($option, 'view');
                $cache->get($view, 'display');
            }
            catch (\JCacheException $exception)
            {
                $view->display();
            }
        }
        else
        {
            $view->display();
        }
 
        return $this;
    }
 
    /**
     * Execute a task by triggering a method in the derived class.
     *
     * @param   string  $task  The task to perform. If no matching task is found, the '__default' task is executed, if defined.
     *
     * @return  mixed   The value returned by the called method.
     *
     * @since   3.0
     * @throws  \Exception
     */
    public function execute($task)
    {
        $this->task = $task;
 
        $task = strtolower((string) $task);
        // Check for edit form.
        if ($vName === 'form' && !$this->checkEditId('com_content.edit.article', $id))
        {
            // Somehow the person just went to the form - we don't allow that.
            return JError::raiseError(403, JText::sprintf('JLIB_APPLICATION_ERROR_UNHELD_ID', $id));
        }
 
        if ($vName === 'article')
        {
            // Get/Create the model
            if ($model = $this->getModel($vName))
            {
                if (ComponentHelper::getParams('com_content')->get('record_hits', 1) == 1)
                {
                    $model->hit();
                }
            }
        }
 
        parent::display($cachable, $safeurlparams);
 
        return $this;
    }
}
 
 
        $task = strtolower((string) $task);
 
        if (isset($this->taskMap[$task]))
        {
            $doTask = $this->taskMap[$task];
        }
        elseif (isset($this->taskMap['__default']))
        {
            $doTask = $this->taskMap['__default'];
        }
        else
        {
            throw new \Exception(\JText::sprintf('JLIB_APPLICATION_ERROR_TASK_NOT_FOUND', $task), 404);
        }
 
        // Record the actual task being fired
        $this->doTask = $doTask;
 
        return $this->$doTask();
    }
 
    /**
     * Method to get a model object, loading it if required.
     *
     * @param   string  $name    The model name. Optional.
     * @param   string  $prefix  The class prefix. Optional.
     * @param   array   $config  Configuration array for model. Optional.
     *
     * @return  \JModelLegacy|boolean  Model object on success; otherwise false on failure.
     *
     * @since   3.0
     */
    public function getModel($name = '', $prefix = '', $config = array())
    {
        if (empty($name))
        {
            $name = $this->getName();
        }
 
    // Can create in any category (component permission) or at least in one category
    $canCreateRecords = $user->authorise('core.create', 'com_content')
        || count($user->getAuthorisedCategories('com_content', 'core.create')) > 0;
 
    // Instead of checking edit on all records, we can use **same** check as the form editing view
    $values = (array) JFactory::getApplication()->getUserState('com_content.edit.article.id');
    $isEditingRecords = count($values);
 
    $hasAccess = $canCreateRecords || $isEditingRecords;
 
    if (!$hasAccess)
    {
        JFactory::getApplication()->enqueueMessage(JText::_('JERROR_ALERTNOAUTHOR'), 'warning');
 
        return;
    }
}
 
$controller = JControllerLegacy::getInstance('Content');
$controller->execute(JFactory::getApplication()->input->get('task'));
$controller->redirect();
 
        {
            \JProfiler::getInstance('Application')->mark('afterRenderComponent ' . $option);
        }
 
        return $contents;
    }
 
    /**
     * Execute the component.
     *
     * @param   string  $path  The component path.
     *
     * @return  string  The component output
     *
     * @since   1.7
     */
    protected static function executeComponent($path)
    {
        ob_start();
        require_once $path;
 
        return ob_get_clean();
    }
 
    /**
     * Load the installed components into the components property.
     *
     * @param   string  $option  The element value for the extension
     *
     * @return  boolean  True on success
     *
     * @since   1.5
     * @deprecated  4.0  Use JComponentHelper::load() instead
     */
    protected static function _load($option)
    {
        return static::load($option);
    }
 
    /**
             */
            define('JPATH_COMPONENT_ADMINISTRATOR', JPATH_ADMINISTRATOR . '/components/' . $option);
        }
 
        $path = JPATH_COMPONENT . '/' . $file . '.php';
 
        // If component is disabled throw error
        if (!static::isEnabled($option) || !file_exists($path))
        {
            throw new MissingComponentException(\JText::_('JLIB_APPLICATION_ERROR_COMPONENT_NOT_FOUND'), 404);
        }
 
        // Load common and local language files.
        $lang->load($option, JPATH_BASE, null, false, true) || $lang->load($option, JPATH_COMPONENT, null, false, true);
 
        // Handle template preview outlining.
        $contents = null;
 
        // Execute the component.
        $contents = static::executeComponent($path);
 
        // Revert the scope
        $app->scope = $scope;
 
        if (JDEBUG)
        {
            \JProfiler::getInstance('Application')->mark('afterRenderComponent ' . $option);
        }
 
        return $contents;
    }
 
    /**
     * Execute the component.
     *
     * @param   string  $path  The component path.
     *
     * @return  string  The component output
     *
     * @since   1.7
 
            case 'feed':
                $document->setBase(htmlspecialchars(\JUri::current()));
                break;
        }
 
        $document->setTitle($params->get('page_title'));
        $document->setDescription($params->get('page_description'));
 
        // Add version number or not based on global configuration
        if ($this->get('MetaVersion', 0))
        {
            $document->setGenerator('Joomla! - Open Source Content Management - Version ' . JVERSION);
        }
        else
        {
            $document->setGenerator('Joomla! - Open Source Content Management');
        }
 
        $contents = ComponentHelper::renderComponent($component);
        $document->setBuffer($contents, 'component');
 
        // Trigger the onAfterDispatch event.
        \JPluginHelper::importPlugin('system');
        $this->triggerEvent('onAfterDispatch');
    }
 
    /**
     * Method to run the Web application routines.
     *
     * @return  void
     *
     * @since   3.2
     */
    protected function doExecute()
    {
        // Initialise the application
        $this->initialiseApp();
 
        // Mark afterInitialise in the profiler.
        // Mark afterInitialise in the profiler.
        JDEBUG ? $this->profiler->mark('afterInitialise') : null;
 
        // Route the application
        $this->route();
 
        // Mark afterRoute in the profiler.
        JDEBUG ? $this->profiler->mark('afterRoute') : null;
 
        /*
         * Check if the user is required to reset their password
         *
         * Before $this->route(); "option" and "view" can't be safely read using:
         * $this->input->getCmd('option'); or $this->input->getCmd('view');
         * ex: due of the sef urls
         */
        $this->checkUserRequireReset('com_users', 'profile', 'edit', 'com_users/profile.save,com_users/profile.apply,com_users/user.logout');
 
        // Dispatch the application
        $this->dispatch();
 
        // Mark afterDispatch in the profiler.
        JDEBUG ? $this->profiler->mark('afterDispatch') : null;
    }
 
    /**
     * Return the current state of the detect browser option.
     *
     * @return    boolean
     *
     * @since    3.2
     */
    public function getDetectBrowser()
    {
        return $this->_detect_browser;
    }
 
    /**
     * Return the current state of the language filter.
     *
            array('option', 'view', 'format', 'lang', 'Itemid', 'template', 'templateStyle', 'task'),
            function($systemVariable) use ($input) {
                return $input->exists($systemVariable) && is_array($input->getRaw($systemVariable));
            }
        );
 
        // Unset invalid system variables
        foreach ($invalidInputVariables as $systemVariable)
        {
            $input->set($systemVariable, null);
        }
 
        // Abort when there are invalid variables
        if ($invalidInputVariables)
        {
            throw new \RuntimeException('Invalid input, aborting application.');
        }
 
        // Perform application routines.
        $this->doExecute();
 
        // If we have an application document object, render it.
        if ($this->document instanceof \JDocument)
        {
            // Render the application output.
            $this->render();
        }
 
        // If gzip compression is enabled in configuration and the server is compliant, compress the output.
        if ($this->get('gzip') && !ini_get('zlib.output_compression') && ini_get('output_handler') !== 'ob_gzhandler')
        {
            $this->compress();
 
            // Trigger the onAfterCompress event.
            $this->triggerEvent('onAfterCompress');
        }
 
        // Send the application response.
        $this->respond();
 
{
    include_once __DIR__ . '/defines.php';
}
 
if (!defined('_JDEFINES'))
{
    define('JPATH_BASE', __DIR__);
    require_once JPATH_BASE . '/includes/defines.php';
}
 
require_once JPATH_BASE . '/includes/framework.php';
 
// Set profiler start time and memory usage and mark afterLoad in the profiler.
JDEBUG ? JProfiler::getInstance('Application')->setStart($startTime, $startMem)->mark('afterLoad') : null;
 
// Instantiate the application.
$app = JFactory::getApplication('site');
 
// Execute the application.
$app->execute();
 

Environment & details:

empty
empty
empty
empty
empty
Key Value
PHP_FCGI_CHILDREN 0
PATH /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
PHP_FCGI_MAX_REQUESTS 5000
PWD /www/s/y/u85585/wrappers
PHPRC /www/s/y/u85585/conf/php74
SCRIPT_NAME /_sub/sth02/index.php
REQUEST_URI /_sub/sth02/sk/site-map/articles/64-sample-data-articles/joomla/extensions/modules/articles-modules
QUERY_STRING
REQUEST_METHOD GET
SERVER_PROTOCOL HTTP/1.0
GATEWAY_INTERFACE CGI/1.1
REDIRECT_URL /_sub/sth02/sk/site-map/articles/64-sample-data-articles/joomla/extensions/modules/articles-modules
REMOTE_PORT 52252
SCRIPT_FILENAME /www/s/y/u85585/public_html/_sub/sth02/index.php
SERVER_ADMIN support@exohosting.sk
CONTEXT_DOCUMENT_ROOT /www/s/y/u85585/public_html
CONTEXT_PREFIX
REQUEST_SCHEME http
DOCUMENT_ROOT /www/s/y/u85585/public_html
REMOTE_ADDR 34.204.52.16
SERVER_PORT 80
SERVER_ADDR 10.10.51.16
SERVER_NAME systemthinking.xyz
SERVER_SOFTWARE Apache
SERVER_SIGNATURE
LD_LIBRARY_PATH /home/httpd/lib
HTTP_CONNECTION close
HTTP_X_IP_COUNTRY US
HTTP_X_FORWARDED_PROTO https
HTTP_X_FORWARDED_PORT 443
HTTP_X_FORWARDED_FOR 34.204.52.16
HTTP_USER_AGENT claudebot
HTTP_ACCEPT */*
HTTP_HOST systemthinking.xyz
PHPSESSDIR /tmp
TMPDIR /tmp
HTTP_AUTHORIZATION
SCRIPT_URI http://systemthinking.xyz/_sub/sth02/sk/site-map/articles/64-sample-data-articles/joomla/extensions/modules/articles-modules
SCRIPT_URL /_sub/sth02/sk/site-map/articles/64-sample-data-articles/joomla/extensions/modules/articles-modules
GEOIP_COUNTRY_CODE US
HTTPS on
REDIRECT_STATUS 200
REDIRECT_PHPSESSDIR /tmp
REDIRECT_TMPDIR /tmp
REDIRECT_HTTP_AUTHORIZATION
REDIRECT_SCRIPT_URI http://systemthinking.xyz/_sub/sth02/sk/site-map/articles/64-sample-data-articles/joomla/extensions/modules/articles-modules
REDIRECT_SCRIPT_URL /_sub/sth02/sk/site-map/articles/64-sample-data-articles/joomla/extensions/modules/articles-modules
REDIRECT_GEOIP_COUNTRY_CODE US
REDIRECT_HTTPS on
FCGI_ROLE RESPONDER
PHP_SELF /_sub/sth02/index.php
REQUEST_TIME_FLOAT 1711662234.99
REQUEST_TIME 1711662234
argv Array ( )
argc 0
Key Value
PHP_FCGI_CHILDREN 0
PATH /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
PHP_FCGI_MAX_REQUESTS 5000
PWD /www/s/y/u85585/wrappers
PHPRC /www/s/y/u85585/conf/php74
SCRIPT_NAME /_sub/sth02/index.php
REQUEST_URI /_sub/sth02/sk/site-map/articles/64-sample-data-articles/joomla/extensions/modules/articles-modules
QUERY_STRING
REQUEST_METHOD GET
SERVER_PROTOCOL HTTP/1.0
GATEWAY_INTERFACE CGI/1.1
REDIRECT_URL /_sub/sth02/sk/site-map/articles/64-sample-data-articles/joomla/extensions/modules/articles-modules
REMOTE_PORT 52252
SCRIPT_FILENAME /www/s/y/u85585/public_html/_sub/sth02/index.php
SERVER_ADMIN support@exohosting.sk
CONTEXT_DOCUMENT_ROOT /www/s/y/u85585/public_html
CONTEXT_PREFIX
REQUEST_SCHEME http
DOCUMENT_ROOT /www/s/y/u85585/public_html
REMOTE_ADDR 34.204.52.16
SERVER_PORT 80
SERVER_ADDR 10.10.51.16
SERVER_NAME systemthinking.xyz
SERVER_SOFTWARE Apache
SERVER_SIGNATURE
LD_LIBRARY_PATH /home/httpd/lib
HTTP_CONNECTION close
HTTP_X_IP_COUNTRY US
HTTP_X_FORWARDED_PROTO https
HTTP_X_FORWARDED_PORT 443
HTTP_X_FORWARDED_FOR 34.204.52.16
HTTP_USER_AGENT claudebot
HTTP_ACCEPT */*
HTTP_HOST systemthinking.xyz
PHPSESSDIR /tmp
TMPDIR /tmp
HTTP_AUTHORIZATION
SCRIPT_URI http://systemthinking.xyz/_sub/sth02/sk/site-map/articles/64-sample-data-articles/joomla/extensions/modules/articles-modules
SCRIPT_URL /_sub/sth02/sk/site-map/articles/64-sample-data-articles/joomla/extensions/modules/articles-modules
GEOIP_COUNTRY_CODE US
HTTPS on
REDIRECT_STATUS 200
REDIRECT_PHPSESSDIR /tmp
REDIRECT_TMPDIR /tmp
REDIRECT_HTTP_AUTHORIZATION
REDIRECT_SCRIPT_URI http://systemthinking.xyz/_sub/sth02/sk/site-map/articles/64-sample-data-articles/joomla/extensions/modules/articles-modules
REDIRECT_SCRIPT_URL /_sub/sth02/sk/site-map/articles/64-sample-data-articles/joomla/extensions/modules/articles-modules
REDIRECT_GEOIP_COUNTRY_CODE US
REDIRECT_HTTPS on
FCGI_ROLE RESPONDER
0. Whoops\Handler\PrettyPageHandler