Created: 2023-11-15 mer. 11:40
Pour bâtir un site de documentation
Pour bâtir le site complet d’un labo
IN – compilation -> OUT
C’est tout
=> CI
=> gitlab-pages
en fonction du chemin demandé dans la requête
À maîtriser en tout premier lieu !
Exemple pour hugo : fr/institut/actualites/ed0797aa-655e-4f7c-98b2-de4ad417a4c7/
content/french/institut/actualités/ed0797aa-655e-4f7c-98b2-de4ad417a4c7.md
themes/institut/_defaut/single.html
https://www.math.univ-toulouse.fr
demo sur quelques fonctionnalités sympathiques
Exemple : indico, hal, annuaire
configurer le générateur pour ce type de fichiers
avec hugo et zola, ces fichiers sont considérés comme des préambules complets : rien à faire.
{ "id": "10951", "title": "Quid of homology spheres?", "description": "<p>The early history of topology began with the ideas of E. Betti and B. Riemann and the work of H. Poincaré on the concept of homology, quickly refined into the concept of homotopy. The infamous Poincaré conjecture (now theorem) states that no compact object has the same homotopy groups as the 3-sphere. But Poincaré originally believed the same about homology. This other conjecture was disproved by Poincaré himself by building a \"homology sphere\", a 3-dimensional object not homeomorphic to the 3-sphere but with the same homology groups. In this talk we present another method of building this homology sphere due to M. Dehn. This construction makes use of elementary tools from knot theory, homotopy and of course homology, which we present along the way.</p>", "startDate": { "date": "2023-11-15", "time": "18:00:00", "tz": "Europe/Paris" }, "timezone": "Europe/Paris", "endDate": { "date": "2023-11-15", "time": "19:00:00", "tz": "Europe/Paris" }, "room": "Room Picard (1R2-129)", "type": "events", "references": [], "categoryId": 607, "category": { "name": "Séminaire QUID", "id": "607" }, "roomFullname": "Room Picard (1R2-129)", "creationDate": { "date": "2023-11-11", "time": "18:10:05.158689", "tz": "Europe/Paris" }, "creator": "Saint-Criq, Anthony", "chairs": [ { "lastName": "Rodau", "firstName": "Adrien", "fullName": "Rodau, Adrien" } ], "keywords": [], "link": "https://indico.math.cnrs.fr/event/10951/", "evenements": [ "seminaires" ], "eventFamily": "seminaires", "recurrentData": { "_fossil": "categoryMetadata", "type": "Category", "name": "Séminaire QUID", "id": 607, "url": "https://indico.math.cnrs.fr/category/607/" }, "recurrentEvent": [ "607" ], "date": "2023-11-15T18:00:00+01:00", "start": "2023-11-15T18:00:00+01:00", "end": "2023-11-15T19:00:00+01:00" }
{ "sn": "Gambarotto", "givenname": "Pierre", "cn": "Pierre Gambarotto", "id": "865d8574-b1b1-44c2-a371-fee21b79bdcf", "ldapAttrMap": { "givenname": "Prénom", "imtrole": "Fonction", "sn": "Nom", "buildingname": "Bâtiment", "telephonenumber": "Téléphone", "mail": "Mail", "jpegphoto": "Image", "roomnumber": "Numéro de salle", "description": "Description" }, "mail": "Pierre.Gambarotto@math.univ-toulouse.fr", "imtrole": [ "Ingénieur de Recherche" ], "personalwebpage": "http://bla.bli.fr", "jpegphoto": "https://profil.math.univ-toulouse.fr/api/public/v1/media/public?ressource=e4307d6c-2e2f-4053-9724-03315063db44.jpg", "description": "Télétravaille le lundi et le vendredi", "group": "Personnel Administratif et Technique", "telephonenumber": "+33659545831", "roomnumber": "221", "buildingname": "1R3", "relativeLink": true, "link": "/fr/annuaire/865d8574-b1b1-44c2-a371-fee21b79bdcf", "title": "Pierre Gambarotto" }
hugo : dénicher le template
une API = un script produisant des fichiers dans un répertoire cible.
par ex : annu.sh génère le contenu de content/annuaire
Au niveau du déploiement, il faut donc prévoir
Javascript obligatoire côté client.
flux à partir du client :
couche js : interroge un index, soit local soit API
dans les 2 cas, l’index est mise à jour au moment où on calcule le site.
await fetch("https://www.math.univ-toulouse.fr/api/public/search?limit=15&offset=0&query=besse", { "credentials": "include", "headers": { "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/117.0", "Accept": "application/json", "Accept-Language": "fr,en;q=0.5", "Content-Type": "application/json", "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, PATCH, OPTIONS", "Access-Control-Allow-Headers": "X-Requested-With, content-type, Authorization", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "Sec-GPC": "1" }, "referrer": "https://www.math.univ-toulouse.fr/fr/recherche/productions-scientifiques/publications/", "method": "POST", "mode": "cors" });
Le résultat de l’appel doit être présenté dans la page :
L’interrogation de l’index peut échouer :
Dans les 2 cas, il faut que le site reste lisible.
i.e. pas le remplissage du site !
i.e. ce que je referais différemment
-theme, template et CSS : favoriser une approche composant.
n’hésitez pas à vous faire aider/à embaucher sur cette partie
=> générer des fragments html dans les ressources statiques de votre site
=> htmx pour les insérer dynamiquement