Craft CMS Asked by Dannie on May 13, 2021
I found it pretty straightforward to get something like dynamic page titles working by setting a variable at the template level and pulling that into my site’s meta tags:
My _layout.twig:
<head>
{% if title is defined %}
<title>{{ title }}</title>
{% endif %}
</head>
My template.twig:
{% set title = entry.title %}
But what’s the best practice for pulling something like an asset URL that needs queried from within {% block content %}? I’m running a for loop on my asset field to grab the Url from within the template, but this doesn’t seem to work outside of {% block content %}
, and if I run it from within {% block content %}
the variable doesn’t carry over to _layout.twig where I need it in the meta tag.
My _layout.twig looks like this:
{% if openGraphImage is defined %}
<meta property="og:image" content="{{openGraphImage}}" />
{% endif %}
But how can I define an image Url that’s coming from within an entry query and have it pass back to the meta tag?
I didn't have a full understanding of how blocks work, but I've solved my problem. I think because I was trying to set the variable in my template outside of the block (and I was trying to bring it into my _layout.twig file without referencing the block I was calling) nothing was getting properly passed from one file to the other. The solution I'm now using looks like this:
_layout.twig:
<meta property="og:image" content="{% block ogImage %}{% endblock %}" />
template.twig:
{% block ogImage %}
{% for image in entry.eventImage.all() %}
{{ image.url() }}
{% endfor %}
{% endblock %}
Answered by Dannie on May 13, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP