{% set relatedEntryLinks = [] %} {% for child in children %} {% set relatedEntryLinks = relatedEntryLinks | merge([{ "title": child.title, "href": child.url }]) %} {% endfor %} {% set image = relatedEntry.image[0] ?? null %} {% set cardData = { "title": caterelatedEntrygory.title, "href": relatedEntry.url, "cta": "Learn More", "links": relatedEntryLinks, } %} {% if image is not null %} {% set cardData = cardData | merge({ "img": { "element": image }
"title": child.title, "href": child.url }]) %} {% endfor %} {% set image = relatedEntry.image[0] ?? null %} {% set cardData = { "title": caterelatedEntrygory.title, "href": relatedEntry.url, "cta": "Learn More", "links": relatedEntryLinks, } %} {% if image is not null %} {% set cardData = cardData | merge({
if (null !== $template && !$template instanceof self) { throw new \LogicException('A block must be a method on a \Twig\Template instance.'); } if (null !== $template) { try { $template->$block($context, $blocks); } catch (Error $e) { if (!$e->getSourceContext()) { $e->setSourceContext($template->getSourceContext()); } // this is mostly useful for \Twig\Error\LoaderError exceptions
{% endblock footer %} {# -- Page body -- #} {% block bodyHtml %} <main id="main" class="pb-space-8 print:pb-0"> {% block content %}{% endblock %} </main> {% endblock bodyHtml %} {% block endBody %} </body> {% endblock endBody %}
if (null !== $template && !$template instanceof self) { throw new \LogicException('A block must be a method on a \Twig\Template instance.'); } if (null !== $template) { try { $template->$block($context, $blocks); } catch (Error $e) { if (!$e->getSourceContext()) { $e->setSourceContext($template->getSourceContext()); } // this is mostly useful for \Twig\Error\LoaderError exceptions
{% endblock headContent %} {# -- Page content that should be included in the <body> -- #} {% block bodyContent %} {# -- Page content that should be included in the <body> -- #} {% block bodyHtml %} {% endblock bodyHtml %} {# -- Inline JS #} {% include "_boilerplate/_partials/body-js.twig" %} {# -- Any JavaScript that should be included before </body> -- #}
if (null !== $template && !$template instanceof self) { throw new \LogicException('A block must be a method on a \Twig\Template instance.'); } if (null !== $template) { try { $template->$block($context, $blocks); } catch (Error $e) { if (!$e->getSourceContext()) { $e->setSourceContext($template->getSourceContext()); } // this is mostly useful for \Twig\Error\LoaderError exceptions
{% block bodyWrapperStart %} <div class="main relative"> {% endblock bodyWrapperStart %} {% block navbar %}{% endblock navbar %} {# -- Page content that should be included in the <body> -- #} {% block bodyContent %}{% endblock bodyContent %} {# Show an edit button for logged in users #} {% include "@internal:edit-button" %} {% include "@internal:feedback-button" %} {# Show the footer #} {% block footer %}{% endblock footer %}
if (null !== $template && !$template instanceof self) { throw new \LogicException('A block must be a method on a \Twig\Template instance.'); } if (null !== $template) { try { $template->$block($context, $blocks); } catch (Error $e) { if (!$e->getSourceContext()) { $e->setSourceContext($template->getSourceContext()); } // this is mostly useful for \Twig\Error\LoaderError exceptions
{# -- Craft globals to global variables -- #} {% set alert = craft.globalSets().handle('alertBar').one() %} {# -- Twig output from the render; this must be in a block -- #} {% block htmlPage %} {% endblock %} {% endapply %}
return ob_get_clean(); } protected function displayWithErrorHandling(array $context, array $blocks = []) { try { $this->doDisplay($context, $blocks); } catch (Error $e) { if (!$e->getSourceContext()) { $e->setSourceContext($this->getSourceContext()); } // this is mostly useful for \Twig\Error\LoaderError exceptions
{ return $this->blocks; } public function display(array $context, array $blocks = []) { $this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks)); } public function render(array $context) { $level = ob_get_level(); if ($this->env->isDebug()) {
{# -- Base web layout template that all web requests inherit from -- #} {% extends "_layouts/global-variables.twig" %} {%- block htmlPage -%} {# {% minify %} #} <!DOCTYPE html> {% block htmlTag %} <html lang="{{ craft.app.language |slice(0,2) }}">
return ob_get_clean(); } protected function displayWithErrorHandling(array $context, array $blocks = []) { try { $this->doDisplay($context, $blocks); } catch (Error $e) { if (!$e->getSourceContext()) { $e->setSourceContext($this->getSourceContext()); } // this is mostly useful for \Twig\Error\LoaderError exceptions
{ return $this->blocks; } public function display(array $context, array $blocks = []) { $this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks)); } public function render(array $context) { $level = ob_get_level(); if ($this->env->isDebug()) {
│ │ │ bodyContent │ └─────────────────────────────────────────────────────────────────────────────┘ #} {% extends craft.app.request.isAjax() and not craft.app.request.getIsPreview() ? "_boilerplate/_layouts/base-ajax-layout.twig" : "_boilerplate/_layouts/base-web-layout.twig" %} {% block htmlTag %} <html class="fonts-loaded" lang="{{ craft.app.language |slice(0,2) }}" prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb#"> {% endblock htmlTag %}
return ob_get_clean(); } protected function displayWithErrorHandling(array $context, array $blocks = []) { try { $this->doDisplay($context, $blocks); } catch (Error $e) { if (!$e->getSourceContext()) { $e->setSourceContext($this->getSourceContext()); } // this is mostly useful for \Twig\Error\LoaderError exceptions
{ return $this->blocks; } public function display(array $context, array $blocks = []) { $this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks)); } public function render(array $context) { $level = ob_get_level(); if ($this->env->isDebug()) {
│ │ subContent │ │ │ └─────────────────────────────────────────────────────────────────────────┘ │ │ │ │ bodyHtml │ └─────────────────────────────────────────────────────────────────────────────┘ #} {% extends "_boilerplate/_layouts/base-html-layout.twig" %} {# -- Any <meta> tags that should be included in the <head> #} {% block headMeta %} <meta name="robots" content="index,follow"> {% endblock headMeta %} {# -- Any <link> tags that should be included in the <head> #}
return ob_get_clean(); } protected function displayWithErrorHandling(array $context, array $blocks = []) { try { $this->doDisplay($context, $blocks); } catch (Error $e) { if (!$e->getSourceContext()) { $e->setSourceContext($this->getSourceContext()); } // this is mostly useful for \Twig\Error\LoaderError exceptions
{ return $this->blocks; } public function display(array $context, array $blocks = []) { $this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks)); } public function render(array $context) { $level = ob_get_level(); if ($this->env->isDebug()) {
{% extends "_layouts/generic-page-layout.twig" %} {% set pageThemeClass = 'theme-8' %} {% set entry = craft.entries().slug(slug).one() %} {% if entry is null %} {% exit 404 %}
return ob_get_clean(); } protected function displayWithErrorHandling(array $context, array $blocks = []) { try { $this->doDisplay($context, $blocks); } catch (Error $e) { if (!$e->getSourceContext()) { $e->setSourceContext($this->getSourceContext()); } // this is mostly useful for \Twig\Error\LoaderError exceptions
{ return $this->blocks; } public function display(array $context, array $blocks = []) { $this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks)); } public function render(array $context) { $level = ob_get_level(); if ($this->env->isDebug()) {
if ($this->env->isDebug()) { ob_start(); } else { ob_start(function () { return ''; }); } try { $this->display($context); } catch (\Throwable $e) { while (ob_get_level() > $level) { ob_end_clean(); } throw $e;
$this->env = $env; $this->template = $template; } public function render(array $context = []): string { return $this->template->render($context); } public function display(array $context = []) { // using func_get_args() allows to not expose the blocks argument // as it should only be used by internal code
* @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 = []): string { return $this->load($name)->render($context); } /** * Displays a template. * * @param string|TemplateWrapper $name The template name
// Render and return $renderingTemplate = $this->_renderingTemplate; $this->_renderingTemplate = $template; try { $output = $this->getTwig()->render($template, $variables); } finally { $this->_renderingTemplate = $renderingTemplate; $this->setTemplateMode($oldTemplateMode); } $this->afterRenderTemplate($template, $variables, $templateMode, $output);
$isRenderingPageTemplate = $this->_isRenderingPageTemplate; $this->_isRenderingPageTemplate = true; try { $this->beginPage(); echo $this->renderTemplate($template, $variables); $this->endPage(); } finally { $this->_isRenderingPageTemplate = $isRenderingPageTemplate; $this->setTemplateMode($oldTemplateMode); $output = ob_get_clean(); }
) { $view->registerAssetBundle(ContentWindowAsset::class); } // Render and return the template try { $response->content = $view->renderPageTemplate($behavior->template, $behavior->variables, $behavior->templateMode); } catch (Throwable $e) { $previous = $e->getPrevious(); if ($previous instanceof YiiExitException) { // Something called Craft::$app->end() if ($previous instanceof ExitException && $previous->output !== null) { echo $previous->output;
if (isset($this->formatters[$this->format])) { $formatter = $this->formatters[$this->format]; if (!is_object($formatter)) { $this->formatters[$this->format] = $formatter = Yii::createObject($formatter); } if ($formatter instanceof ResponseFormatterInterface) { $formatter->format($this); } else { throw new InvalidConfigException("The '{$this->format}' response formatter is invalid. It must implement the ResponseFormatterInterface."); } } elseif ($this->format === self::FORMAT_RAW) { if ($this->data !== null) { $this->content = $this->data;
/** * @inheritdoc */ protected function prepare(): void { parent::prepare(); $this->_isPrepared = true; } /** * Clear the output buffer to prevent corrupt downloads. *
public function send() { if ($this->isSent) { return; } $this->trigger(self::EVENT_BEFORE_SEND); $this->prepare(); $this->trigger(self::EVENT_AFTER_PREPARE); $this->sendHeaders(); $this->sendContent(); $this->trigger(self::EVENT_AFTER_SEND); $this->isSent = true; }
$response = $this->handleRequest($this->getRequest()); $this->state = self::STATE_AFTER_REQUEST; $this->trigger(self::EVENT_AFTER_REQUEST); $this->state = self::STATE_SENDING_RESPONSE; $response->send(); $this->state = self::STATE_END; return $response->exitStatus; } catch (ExitException $e) { $this->end($e->statusCode, isset($response) ? $response : null);
// Load shared bootstrap require dirname(__DIR__) . '/bootstrap.php'; // Load and run Craft /** @var craft\web\Application $app */ $app = require CRAFT_VENDOR_PATH . '/craftcms/cms/bootstrap/web.php'; $app->run();