- JSON-LD: Organization, WebSite with SearchAction, BreadcrumbList - SitemapController: sitemapindex with main + paginated events (images/videos) - RobotsController: dynamic robots.txt with sitemap URL - SearchController: /search with Meilisearch (TODO) - Meilisearch added to dev and prod docker-compose - Breadcrumbs added to all controllers - .well-known: security.txt, humans.txt, dnt-policy.txt - PGP public key in public/key.asc - SecurityController: /mot-de-passe + .well-known/change-password route Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
75 lines
2.3 KiB
Twig
75 lines
2.3 KiB
Twig
<!DOCTYPE html>
|
|
<html lang="fr">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>{% block title %}{% endblock %}</title>
|
|
{% block meta %}
|
|
<meta name="description" content="{% block description %}E-Ticket - Plateforme de vente de tickets evenementiels pour associations{% endblock %}">
|
|
{% endblock %}
|
|
<script type="application/ld+json">
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "Organization",
|
|
"name": "E-Ticket",
|
|
"url": "https://ticket.e-cosplay.fr",
|
|
"logo": "https://ticket.e-cosplay.fr/logo.png",
|
|
"email": "contact@e-cosplay.fr",
|
|
"telephone": "+33679348802",
|
|
"address": {
|
|
"@type": "PostalAddress",
|
|
"streetAddress": "42 rue de Saint-Quentin",
|
|
"addressLocality": "Beautor",
|
|
"postalCode": "02800",
|
|
"addressCountry": "FR"
|
|
},
|
|
"sameAs": [
|
|
"https://www.facebook.com/assocationecosplay",
|
|
"https://www.e-cosplay.fr"
|
|
]
|
|
}
|
|
</script>
|
|
<script type="application/ld+json">
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "WebSite",
|
|
"name": "E-Ticket",
|
|
"url": "https://ticket.e-cosplay.fr",
|
|
"potentialAction": {
|
|
"@type": "SearchAction",
|
|
"target": {
|
|
"@type": "EntryPoint",
|
|
"urlTemplate": "https://ticket.e-cosplay.fr/search?q={search_term_string}"
|
|
},
|
|
"query-input": "required name=search_term_string"
|
|
}
|
|
}
|
|
</script>
|
|
{% if breadcrumbs is defined and breadcrumbs is not empty %}
|
|
<script type="application/ld+json">
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "BreadcrumbList",
|
|
"itemListElement": [
|
|
{% for breadcrumb in breadcrumbs %}
|
|
{
|
|
"@type": "ListItem",
|
|
"position": {{ loop.index }},
|
|
"name": "{{ breadcrumb.name }}",
|
|
"item": "{{ breadcrumb.url }}"
|
|
}{% if not loop.last %},{% endif %}
|
|
{% endfor %}
|
|
]
|
|
}
|
|
</script>
|
|
{% endif %}
|
|
{% block stylesheets %}{% endblock %}
|
|
{% block javascripts %}
|
|
{{ vite_asset('app.js') }}
|
|
{% endblock %}
|
|
</head>
|
|
<body>
|
|
{% block body %}{% endblock %}
|
|
</body>
|
|
</html>
|