Journal Une tribune pour le CMS grav

PostĂ© par (site web personnel) . Licence CC By‐SA.
Étiquettes :
6
17
sept.
2018

Bonjour Nal,

Je t'écris pour te présenter un plugin que j'ai eu à écrire pour le CMS Grav: il s'agit d'une tribune semblable à celle de linuxfr.

gpt

Conforme au standard coutumier des tribunes de la moulosphĂšre, il est utilisable via la plupart des coincoins, tel que l'excellent QuteQoin:

QuteQoin

J'espÚre que grav-plugin-tribune alias gpt prendra sa place parmi les bouchots facile à installer à cÎté d'un site comme l'était le plugin pour Drupal.

  • # Grav c'est cool

    PostĂ© par . ÉvaluĂ© Ă  3.

    Grav est super intĂ©ressant, Ă  mi-chemin entre les gĂ©nĂ©rateurs de site statique et les CMS Ă  la Wordpress ! En gros, toutes les donnĂ©es exploitĂ©es par Grav sont stockĂ©es dans le dossier mĂȘme de l'installation (flat-file database) ce qui permet une sauvegarde ultra simple avec rsync & cie.

    AprÚs, chaque étape finie de construction du site est judicieusement mise en cache pour permettre un chargement ultra-rapide des pages et des fonctionnalités... tout en gardant le cÎté dynamique de PHP qui permet de mettre en place des systÚmes d'authentification/autorisation ou... ou autre chose j'imagine mais perso j'ai rien trouvé d'autre d'utile à faire avec un CMS lol

    Écrire un thĂšme pour Grav, c'est juste merveilleux avec le moteur de templating Twig. Et du coup pour les personnes qui ont l'habitude de trucs vraiment mal foutus (genre Wordpress/Drupal) c'est rafraĂźchissant d'utiliser une technologie qui a appris des erreurs du passĂ©.

    Perso, mon expĂ©rience a Ă©tĂ© de passer de Wordpress Ă  Grav, puis Ă  des gĂ©nĂ©rateurs de site statique, car je me suis rendu compte qu'un gĂ©nĂ©rateur me permettait de faire tout ce que je faisais dĂ©jĂ  avec un CMS complet, mais avec moins de risques de sĂ©curitĂ© (pas besoin de stresser pour les mises Ă  jour) et moins d'impact Ă©cologique (gĂ©nĂ©rer tes pages une fois c'est plus Ă©colo que les gĂ©nĂ©rer Ă  chaque requĂȘte ou de faire tourner une surcouche PHP avec un cache APCU).

    Bref, si tu veux absolument utiliser un CMS en PHP, essaye Grav. Y'a des chances que tu kiffes graves x). Déso c'était un peu hors sujet mais j'essayais de donner un peu de contexte au journal :D

    • [^] # Re: Grav c'est cool

      PostĂ© par (site web personnel) . ÉvaluĂ© Ă  3. DerniĂšre modification le 17 septembre 2018 Ă  13:59.

      Tu as taisté ce plugin pour faire de grav un générateur statique https://github.com/BarryMode/grav-plugin-blackhole ?

      Ce post est offensant ? Prévenez moi sur https://linuxfr.org/board

      • [^] # Re: Grav c'est cool

        PostĂ© par . ÉvaluĂ© Ă  2.

        Nope, ça existait pas encore Ă  l'Ă©poque oĂč j'utilisais Grav :D

        De fait, j'ai adoptĂ© des solutions plus minimales et plus adaptĂ©es Ă  mon usage, d'abord avec hugo, et maintenant avec gutenberg (qui ne va pas tarder Ă  ĂȘtre renommĂ© zola).

        De fait ce qu'il manque dans certaines situations (pour faire administrer le bousin au quotidien par des personnes sans formation spécifique) c'est un CMS par-dessus avec une gestion des autorisations. NetlifyCMS remplit pas mal cet usage, mais faire tourner une webapp avec un backend NodeJS pour ça c'est overkill. De plus, git est chelou pour ce genre d'usage puisqu'il n'a pas de gestion des permissions et permet à n'importe quel personne qui peut écrire dans le dépÎt de réécrire l'histoire. En bref ce genre de stack c'est du bidouillage. On a beaucoup de marge pour améliorer le status quo ! :)

        Sinon, pour des personnes (qui peuvent partager des identifiants) qui ont un minimum l'habitude des outils numériques (études/secrétariat/communication), gérer le site depuis l'interface web de Gitlab/Gitea passe trÚs bien. Créer un dossier pour l'article, uploader les photos dedans, mettre un index.md et c'est parti que le script d'intégration continue s'occupe du reste !

    • [^] # Re: Grav c'est cool

      PostĂ© par . ÉvaluĂ© Ă  2.

      Tu peux préciser ce qu'est un generateur de site statique ?
      Je reviens un peu au web en ce moment. J'hésite entre partir sur du Wordpress (mais ca me semble lourd... trés lourd... trop lourd !) ou un truc plus sympa comme Grav.

      Merci de ton feedback :)

      • [^] # Re: Grav c'est cool

        PostĂ© par . ÉvaluĂ© Ă  4. DerniĂšre modification le 18 septembre 2018 Ă  13:53.

        On oppose souvent Static Site Generator (SSG) et Flat-File CMS bien que l'on mélange souvent les deux.

        Pour le coup, si un générateur de site statique voit sa logique complÚtement désolidarisé du serveur qui hébergera le site, ce n'est pas le cas du Flat-File CMS qui embarque la génération et l'administration, le point commun (qui est aussi le point de confusion) entre les deux étant l'absence de base de données.

        Que choisir ? Ma foi j'en sais rien du tout :')
        J'ai touché un minipeu Grav en Flat-File CMS et Hugo en SSG, ma foi c'est plutÎt sympa. J'ai entendu pas mal de bien de Pelican sur lequel je zieute pour la prise en charge du reStructuredText et de AsciiDoc mais j'ai pas encore touché.

        P.S. : on en trouve aussi ici

        Alcyone

      • [^] # Re: Grav c'est cool

        PostĂ© par . ÉvaluĂ© Ă  2.

        Comme le dit Alcyone, le générateur de site statique ne s'occupe pas de la gestion du contenu. Pas d'interface d'édition embarquée, pas de gestion des utilisateurices et des permissions, etc... Ce sont des outils à destination des personnes qui ont des besoins éditoriaux minimaux (identification par git + publication de fichiers sans ACL et sans modération) ou qui ont les moyens de développer/adapter une infrastructure en amont pour gérer ces questions.

        En gros, le gĂ©nĂ©rateur de site statique, quand tu lances la construction du site, te produit un dossier de pages HTML que tu peux hĂ©berger n'importe oĂč... y compris sur d'autres rĂ©seaux que HTTP, par exemple IPFS. Ce sont des outils vraiment stylĂ©s qui remplissent une fonction importante dans la diffusion de l'information : mettre en forme le contenu (et rien de plus).

        Du coup c'est Ă  toi de voir dans quelle direction tu veux te lancer. Mes conseils perso selon la direction que tu veux prendre:
        - instance ActivityPub : Plume est un moteur de blog fédéré assez stylé et en développement actif
        - CMS complet : Grav est (ou du moins Ă©tait) dĂ©licieux Ă  utiliser au quotidien et les devs Ă©taient dispo et sympa. Mais faut kiffer le cĂŽtĂ© interface d'administration full-JS qu'il faut une bĂȘte de guerre pour faire tourner dans ton navigateur lol
        - GĂ©nĂ©rateur de site statique : Gutenberg est Ă  mon sens le meilleur compromis. LĂ©ger et rapide, intĂšgre un compilateur Sass vers CSS. Le systĂšme de thĂšmes est pas du tout utile en l'Ă©tat (mais y'a pas forcĂ©ment besoin). Pas d'internationalisation pour le moment (ça arrive), et encore plein de bugs et de trucs Ă  polir mais le systĂšme de templating est prĂ©visible et agrĂ©able, et plutĂŽt aidant dans ses messages d'erreurs je trouve. Le code de Gutenberg est par ailleurs juste trĂšs lisible mĂȘme s'il reste trĂšs perfectible.

        hugo est plus rapide et a beaucoup plus (trop!) de fonctionnalités, mais son moteur de templating est une catastrophe intergalactique. Faut se préparer à passer des heures et des heures à débugger tes templates avec des messages pas du tout informatifs et un systÚme d'héritage de contexte complÚtement retourné du cerveau... et pas de vrai systÚme de macros ! AprÚs si tu as besoin d'internationalisation (i18n) et de plusieurs types de contenus à gérer (content kinds / custom output formats), hugo reste un outil extraordinaire pour parvenir à tes fins !

        • [^] # Re: Grav c'est cool

          PostĂ© par (site web personnel) . ÉvaluĂ© Ă  2.

          J'utilise Hexo pour mon blog qui marche bien, mais je trouve qu'il manque un un CMS qui ferait Ă  la fois du statique et dynamique:

          • une interface d'administration en ligne comme grav/wordpress/drupal.
          • un gros bouton "Publier" qui gĂ©nĂšre les fichiers statiques.
          • une partie publique dynamique optionnelle pour gĂ©rer les tribunes/commentaires/formulaires/...

          On pourrait ainsi héberger à part les trois parties.

          Ce post est offensant ? Prévenez moi sur https://linuxfr.org/board

          • [^] # Re: Grav c'est cool

            PostĂ© par . ÉvaluĂ© Ă  3.

            On pourrait ainsi héberger à part les trois parties.

            Je vais partir de ce principe dans ma réponse :)

            une interface d'administration en ligne comme grav/wordpress/drupal

            Il y a deux approches à cette problématique :
            - CMS pour site statique : un systÚme qui s'interface avec tous les générateurs de site statique (génÚre des fichiers markdown avec frontmatter au choix en YAML/TOML/JSON) comme NetlifyCMS
            - CMS agnostique, ou headless CMS : le systÚme offre généralement une API pull (typiquement en JSON) avec webhooks sur certains événements (en gros un ping vers une page web quand ton continue change) ; j'imagine qu'il existe de tels CMS en pubsub mais ce n'est pas le cas de Directus avec lequel j'avais expérimenté parce que la doc est trÚs fournie

            un gros bouton "Publier" qui génÚre les fichiers statiques.

            Ça ton CMS doit s'en occuper pour toi. Il doit savoir si un article est un brouillon ou prĂȘt pour publication, et ĂȘtre capable de dĂ©clencher la compilation du site quand c'est nĂ©cessaire grĂące Ă  un webhook ou une autre forme de notification.

            une partie publique dynamique optionnelle pour gérer les tribunes/commentaires/formulaires/...

            Pour gérer les formulaires, il y a pas mal de solutions qui répondent à des besoins différents en terme de fonctionnalités :
            - certains t'envoient les soumissions par mail comme Formspree ou Maily Form (idéal pour un formulaire de contact)
            - d'autres utilisent directement l'API de Github (malheureusement!), comme staticman qui est à ma connaissance l'outil autohébergé le plus utilisé pour traiter les commentaires sur les sites statiques
            - d'autres encore stockent d'elles-mĂȘmes les donnĂ©es et t'exposent une API (typiquement JSON) pour accĂ©der au contenu.

            Pour s'attarder sur cette derniÚre approche (qui est trÚs Keep It Simple Stupid), certaines personnes consomment alors directement le contenu cÎté client. Si c'est souhaitable pour du contenu évoluant rapidement (une tribune/discussion en temps-réel), c'est un gùchis de ressources (réseau et puissance de calcul) innommable que de faire ça pour les commentaires... en plus de casser la fonctionnalité pour les personnes qui n'utilisent pas Javascript dans leur navigateur. Cette approche complÚtement débile de l'industrie du web a son petit nom marketing : la JAMStack.

            En revanche, consommée cÎté serveur, une API bien foutue qui stocke les données associées à ton site n'est pas du tout déconnante. Alors si tu veux à la compilation de tes templates récupérer l'ensemble tes commentaires sur une API JSON, c'est pas trÚs scalable/écolo non plus. Par contre, si avant compilation du site tu récupÚres seulement les derniers éléments (depuis la derniÚre compilation du site) et que tu stockes ça directement dans le contenu (ou les data) de ton site statique sous une forme consommable localement par tes templates, là ça commence à avoir du sens ! D'autant plus si tu te débrouilles pour que l'apparition d'un nouvel élément déclenche automatiquement la compilation du site.

            Cette derniĂšre approche, je la trouve particuliĂšrement intĂ©ressante pour gĂ©rer les intĂ©ractions Indieweb entre nos sites. Ça peut se construire avec webmention.io (hĂ©bergeur de webmention) grĂące aux notifications IRC/Jabber intĂ©grĂ©es, ou alors directement avec une solution maison autohĂ©bergĂ©e sur ton stack (les webmention c'est vraiment pas compliquĂ© Ă  implĂ©menter).

            Ainsi, tu peux afficher tes commentaires/intéractions sur ton site statique, y compris quand il est partagé sur d'autres réseaux que HTTP ! Typiquement, quand tu le partages sur une clé USB, ou sur IPFS, ou Freenet, etc...

            Déso c'était un peu long mais condenser plusieurs années de réflexion/expérimentation en un paragraphe c'est pas mon fort x)

Suivre le flux des commentaires

Note : les commentaires appartiennent Ă  celles et ceux qui les ont postĂ©s. Nous n’en sommes pas responsables.