Last active
February 27, 2026 22:59
-
-
Save alexander-schranz/b27d69a85f9a72afc1bf0b2b29667e63 to your computer and use it in GitHub Desktop.
Complex Sulu Seo Twig Template
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| {%- spaceless %} | |
| {% set metaPublisher = 'Sulu GmbH' %} | |
| {% set metaClientName = 'Sulu' %} | |
| {% set metaCopyright = 'Sulu GmbH' %} | |
| {% set metaLocaleParts = app.request.locale|split('_') %} | |
| {% set metaLanguage = metaLocaleParts[0] %} | |
| {% set metaCountry = metaLocaleParts[1]|default(null) %} | |
| {% set metaLocale = metaLocaleParts|length == 1 ? metaLanguage : metaLanguage ~ '_' ~ metaCountry|upper %} | |
| {% set metaUrl = app.request.uri %} | |
| {# Get meta title #} | |
| {% set metaTitle = extension.seo.title|default(content.title|default('')) %} | |
| {# Get meta description #} | |
| {% set metaDescription = extension.seo.description|default(content.description|default('')|striptags) %} | |
| {% if metaDescription|trim %} | |
| {% set metaDescription = metaDescription|length > 320 ? metaDescription|slice(0, 316) ~ ' ...' : metaDescription %} | |
| {% endif %} | |
| {# Get meta image #} | |
| {% set metaImageFormat = '800x' %} | |
| {% set metaImage = metaImage|default(extension.excerpt.images[0].thumbnails[metaImageFormat]|default()) %} | |
| {% set metaImage = metaImage|default(content.images[0].thumbnails[metaImageFormat]|default()) %} | |
| {% set metaImage = metaImage|default('/website/images/logo.svg') %} | |
| {% set metaImage = absolute_url(asset(metaImage)) %} | |
| {% set metaDefaultTags = { | |
| 'language': metaLanguage, | |
| 'publisher': metaPublisher, | |
| 'author': metaClientName, | |
| 'copyright': metaCopyright, | |
| 'audience': 'all', | |
| 'distribution': 'global', | |
| 'image': metaImage, | |
| } %} | |
| {% set metaDCTags = { | |
| 'DC.Title': metaTitle, | |
| 'DC.Publisher': metaPublisher, | |
| 'DC.Copyright': metaCopyright, | |
| } %} | |
| {% set metaTwitterTags = { | |
| 'twitter:card': 'summary', | |
| 'twitter:url': metaUrl, | |
| 'twitter:title': metaTitle, | |
| 'twitter:description': metaDescription, | |
| 'twitter:image': metaImage, | |
| } %} | |
| {% set ogMetaTags = { | |
| 'og:site_name': metaClientName, | |
| 'og:url': metaUrl, | |
| 'og:title': metaTitle, | |
| 'og:image': metaImage, | |
| 'og:type': 'website', | |
| 'og:description': metaDescription, | |
| 'og:locale': metaLocale | |
| } %} | |
| {% endspaceless -%} | |
| {# Default Seo: http://blog.sulu.io/new-in-sulu-1-4-customizable-seo-tags #} | |
| {%- embed '@SuluWebsite/Extension/seo.html.twig' with { | |
| seo: extension.seo|default([]), | |
| content: content|default([]), | |
| urls: urls|default([]), | |
| shadowBaseLocale: shadowBaseLocale|default(), | |
| defaultLocale: request.defaultLocale|default('en') | |
| } -%} | |
| {% block title %} | |
| {% if not seoTitle -%} | |
| {% set seoTitle = app.request.pathInfo|split('/')|last|replace({'-': '_'})|humanize %} | |
| {%- endif -%} | |
| <title>{{ seoTitle }} - {{ metaClientName }}</title> | |
| {%- endblock -%} | |
| {%- block description -%} | |
| {%- if seoDescription|default(metaDescription) -%} | |
| <meta name="description" content="{{ seoDescription|default(metaDescription) }}"/> | |
| {%- endif -%} | |
| {%- endblock -%} | |
| {%- endembed %} | |
| {# Meta Default Tags #} | |
| {% block metaDefaultTags %} | |
| {% for property, value in metaDefaultTags if value %} | |
| <meta name="{{ property }}" content="{{ value }}"/> | |
| {% endfor %} | |
| {% endblock %} | |
| {# Meta DC Tags #} | |
| {% block metaDCTags %} | |
| {% for property, value in metaDCTags if value %} | |
| <meta name="{{ property }}" content="{{ value }}"/> | |
| {% endfor %} | |
| {% endblock %} | |
| {# Meta Twitter Tags #} | |
| {% block metaTwitterTags %} | |
| {% for property, value in metaTwitterTags if value %} | |
| <meta name="{{ property }}" content="{{ value }}"/> | |
| {% endfor %} | |
| {% endblock %} | |
| {# Meta OG Tags #} | |
| {% block ogMetaTags %} | |
| {% for property, value in ogMetaTags if value %} | |
| <meta property="{{ property }}" content="{{ value }}"/> | |
| {% endfor %} | |
| {% endblock %} | |
| {# Pagination #} | |
| {% if prevPageUrl|default -%} | |
| <link rel="prev" href="{{ absolute_url(prevPageUrl)|trim('?') }}"> | |
| {%- endif -%} | |
| {% if nextPageUrl|default -%} | |
| <link rel="next" href="{{ absolute_url(nextPageUrl)|trim('?') }}"> | |
| {%- endif -%} | |
| {% if view.pages is defined and (view.pages.page != 1 or view.pages.hasNextPage) %} | |
| {% if view.pages.page != 1 %} | |
| <link rel="prev" href="{{ absolute_url('?page=' ~ (view.pages.page - 1))|replace({'?page=1': ''}) }}"> | |
| {% endif %} | |
| {% if view.pages.hasNextPage %} | |
| <link rel="next" href="{{ absolute_url('?page=' ~ (view.pages.page + 1)) }}"> | |
| {% endif %} | |
| {% endif %} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment