Sur cette page
Organiser les pages avec des tags et des catégories
Les taxonomies permettent de classer les pages avec des termes (ex. PHP) regroupés dans des vocabulaires (ex. tags). Cecil génère ensuite une page par vocabulaire et une page par terme.
Déclarer les vocabulaires
Les vocabulaires sont déclarés dans cecil.yml, par paires de noms au pluriel et au singulier :
taxonomies:
categories: category
tags: tag
Classer les pages
Ajoutez les termes dans le front matter de vos pages, en utilisant le nom au pluriel du vocabulaire :
---
title: Mon premier billet
categories: ["Development"]
tags: ["PHP", "Static site"]
---
Cecil génère :
/tags/: la liste des termes du vocabulaire/tags/php/et/tags/static-site/: la liste des pages de chaque terme
Personnaliser la liste des termes
Le template de vocabulaire est nommé d’après le pluriel, ex. layouts/taxonomy/tags.html.twig :
{% extends 'page.html.twig' %}
{% block content %}
<h1>{{ page.title }}</h1>
<ul>
{% for term in page.terms %}
<li><a href="{{ url(term.id) }}">{{ term.name }}</a> ({{ term|length }})</li>
{% endfor %}
</ul>
{% endblock %}
Personnaliser les pages d’un terme
Le template de terme est nommé d’après le singulier, ex. layouts/taxonomy/tag.html.twig :
{% extends 'page.html.twig' %}
{% block content %}
<h1>{{ page.title }}</h1>
{% for p in page.paginator.pages ?? page.pages %}
<article>
<h2><a href="{{ url(p) }}">{{ p.title }}</a></h2>
</article>
{% endfor %}
<a href="{{ url(page.plural) }}">All {{ page.plural }}</a>
{% endblock %}
Afficher les termes d’une page
Dans un template de page, liez chaque terme à sa page :
{% for tag in page.tags ?? [] %}
<a href="{{ url('tags/' ~ tag) }}">{{ tag }}</a>
{% endfor %}
Ou utilisez le partial intégré : {{ include('partials/terms-list.html.twig', {vocabulary: 'tags'}) }}.