🔧 Guide d’intégration des améliorations de filtres
1. Ajouter les nouveaux fichiers à la page blog
Dans pages/blog.html
Ajouter après la section de recherche (vers la ligne 100) :
<!-- Mode de filtrage ET/OU -->
<!-- Toggle pour choisir le mode de filtrage (ET / OU) -->
<div class="filter-mode-selector" id="filter-mode-selector" style="display: none;">
<label class="filter-mode-label">
<input type="radio" name="filter-mode" value="AND" checked>
<span class="mode-text">
<i class="fas fa-check-double"></i> ET (tous les tags)
</span>
</label>
<label class="filter-mode-label">
<input type="radio" name="filter-mode" value="OR">
<span class="mode-text">
<i class="fas fa-list"></i> OU (au moins un tag)
</span>
</label>
</div>
<style>
.filter-mode-selector {
display: flex;
gap: 1rem;
margin: 1rem 0;
padding: 0.75rem;
background: var(--bg-secondary, #f8f9fa);
border-radius: 8px;
align-items: center;
}
.filter-mode-label {
display: flex;
align-items: center;
cursor: pointer;
padding: 0.5rem 1rem;
border-radius: 6px;
transition: all 0.2s ease;
background: white;
border: 2px solid transparent;
}
.filter-mode-label:hover {
background: var(--primary-light, #e3f2fd);
}
.filter-mode-label input[type="radio"] {
margin-right: 0.5rem;
}
.filter-mode-label input[type="radio"]:checked + .mode-text {
font-weight: 600;
color: var(--primary-color, #1976d2);
}
.filter-mode-label:has(input:checked) {
border-color: var(--primary-color, #1976d2);
background: var(--primary-light, #e3f2fd);
}
.mode-text {
display: flex;
align-items: center;
gap: 0.5rem;
}
</style>
<!-- Container pour les suggestions de tags -->
<div id="tag-suggestions"></div>
Dans _layouts/default.html ou dans pages/blog.html
Ajouter les nouveaux scripts avant la fermeture du </body> :
<!-- Améliorations des filtres (uniquement sur la page blog) -->
2. Modifier blog-search-pagefind.js
Ajouter le support du mode ET/OU
Dans la fonction performPagefindSearch (ligne 58), modifier :
// AVANT
if (activeFilters.tags.length > 0) {
pagefindFilters.tags = activeFilters.tags;
}
// APRÈS
if (activeFilters.tags.length > 0) {
const filterMode = window.filterEnhancements?.getFilterMode() || 'OR';
if (filterMode === 'AND') {
// Mode ET : tous les tags doivent être présents
pagefindFilters.tags = activeFilters.tags;
} else {
// Mode OU : au moins un tag doit être présent
pagefindFilters.tags = activeFilters.tags;
}
}
Ajouter les suggestions après le filtrage
Dans la fonction toggleTagFilter (ligne 372), après updateActiveFiltersUI() :
// Mettre à jour les suggestions
if (window.filterEnhancements?.updateTagSuggestions) {
window.filterEnhancements.updateTagSuggestions(activeFilters.tags);
}
Ajouter le tri par pertinence
Dans la fonction displaySearchResults (ligne 132), avant updatePagination() :
// Trier les résultats par pertinence
if (window.filterEnhancements?.sortResultsByRelevance) {
window.filterEnhancements.sortResultsByRelevance(
postsContainer,
activeFilters.tags,
query
);
}
3. Exposer les fonctions nécessaires
À la fin de blog-search-pagefind.js, exposer les fonctions globalement :
// Exposer les fonctions pour les améliorations
window.toggleTagFilter = toggleTagFilter;
window.activeFilters = activeFilters;
4. Test des améliorations
Test du script de normalisation
# 1. Prévisualiser les changements
ruby scripts/normalize_tags.rb
# Vous devriez voir quelque chose comme :
# 📄 _posts/2025/06/2025-06-15-vibe-coding.md
# Avant: IA, AI, développement
# Après: IA, développement
# 2. Si tout est correct, appliquer
ruby scripts/normalize_tags.rb --apply
Test des suggestions de tags
- Ouvrir
/blog/dans votre navigateur - Cliquer sur un tag (ex: #IA)
- Vérifier que des suggestions apparaissent en haut
- Cliquer sur une suggestion → le tag doit s’ajouter aux filtres actifs
Test du mode ET/OU
- Cliquer sur plusieurs tags
- Observer les résultats en mode OU (par défaut)
- Basculer en mode ET
- Observer que seuls les articles avec TOUS les tags s’affichent
Test du tri par pertinence
- Faire une recherche avec plusieurs tags
- Les articles les plus pertinents doivent apparaître en premier
- Les articles featured doivent avoir un bonus de pertinence
5. Styles à personnaliser (optionnel)
Si vous voulez adapter les couleurs à votre charte graphique, modifier dans filter-enhancements.css :
/* Couleur principale du gradient */
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
/* → Remplacer par vos couleurs */
/* Couleur des tags actifs */
.tag-pill-large.active-filter {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
}
6. Déploiement
Commit des changements
git add scripts/ assets/ _includes/ FILTER_IMPROVEMENTS.md INTEGRATION_EXAMPLE.md
git commit -m "feat: Ajouter améliorations des filtres Pagefind
- Script de normalisation des tags
- Suggestions de tags liés basées sur la co-occurrence
- Mode de filtrage ET/OU
- Tri des résultats par pertinence
- Documentation complète
Impact attendu:
- Consolidation des tags (IA: 73→91 articles)
- Meilleure découvrabilité du contenu
- Expérience de filtrage plus intuitive"
git push
Intégration progressive
Si vous préférez tester progressivement :
Étape 1 : Normalisation seule
ruby scripts/normalize_tags.rb --apply
git add _posts scripts/normalize_tags.rb
git commit -m "chore: Normaliser les tags du blog"
git push
Étape 2 : Attendre le rebuild et tester
Étape 3 : Ajouter les améliorations JS/CSS
git add assets/ _includes/
git commit -m "feat: Ajouter suggestions et tri des filtres"
git push
7. Vérifications post-déploiement
✅ Checklist :
- Les tags sont normalisés dans les articles
- L’index Pagefind a été régénéré (vérifier les logs CI/CD)
- La recherche fonctionne toujours
- Les suggestions de tags apparaissent
- Le toggle ET/OU fonctionne
- Le tri par pertinence est actif
- Les styles sont corrects sur mobile et desktop
- Pas d’erreurs dans la console du navigateur
8. Rollback si nécessaire
Si quelque chose ne fonctionne pas :
# Revenir au commit précédent
git reset --hard HEAD~1
# Ou revenir à un commit spécifique
git reset --hard <commit-hash>
# Push force (attention, à utiliser avec précaution)
git push --force
9. Support et debugging
Console du navigateur
Les scripts affichent des logs utiles :
console.log('🏷️ 20 tags configurés comme filtres')
console.log('✨ Améliorations des filtres chargées')
console.log('🔍 Recherche Pagefind: "MCP"')
Vérifier que les filtres sont bien indexés
Après le build, inspecter un article HTML généré :
cat _site/articles/2025/06/15/vibe-coding-prompt-driven-development.html | grep data-pagefind-filter
Vous devriez voir :
data-pagefind-filter="tags:IA"
data-pagefind-filter="tags:développement"
data-pagefind-filter="tags:prompt engineering"
10. Optimisations futures
Script de validation pre-commit
Créer .git/hooks/pre-commit :
#!/bin/bash
ruby scripts/normalize_tags.rb --check
if [ $? -ne 0 ]; then
echo "❌ Des tags non normalisés ont été détectés"
echo "Exécutez: ruby scripts/normalize_tags.rb --apply"
exit 1
fi
Analytics
Tracker l’usage des filtres avec Google Analytics :
// Dans blog-search-pagefind.js
function toggleTagFilter(tag) {
// ... code existant ...
// Track dans GA4
if (window.gtag) {
gtag('event', 'filter_tag', {
'tag_name': tag,
'filter_action': activeFilters.tags.includes(tag) ? 'add' : 'remove'
});
}
}
🎉 C’est terminé !
Votre système de filtres est maintenant optimisé pour offrir une meilleure expérience utilisateur.