Discourse comme CMS pour un site Jekyll

Je suis un grand utilisateur de Discourse et de Jekyll, et récemment j’ai expérimenté l’utilisation d’une instance Discourse comme système de gestion de contenu pour un site statique Jekyll. Je viens tout juste de commencer à jouer avec cette idée, et une partie de ma raison de poster à ce stade est simplement de voir si quelqu’un d’autre a déjà fait cela ou quelque chose de similaire. Sinon, vous pourriez avoir une meilleure approche et me dissuader de perdre du temps là-dessus :grin:

Comment j’imagine que cela fonctionnerait

  • Le contenu Markdown serait édité dans une instance Discourse (offrant ainsi aux utilisateurs non techniques une belle interface pour l’édition) et pourrait être facilement réédité, mis à jour, etc. La barre d’outils de mise en forme et autres commodités rendent l’utilisateur non technique beaucoup plus heureux.

  • Dans le site Jekyll, un fichier YAML contiendrait un tableau d’URL de publication (ou d’identifiants de publication si nous décidons que la base URL de Discourse est toujours la même…) qui devraient être interrogés pour leur contenu.

  • Un simple plugin Jekyll exécuterait un hook pour interroger chaque URL (à chaque redémarrage du serveur Jekyll ?) et récupérer les données. (Pour de nombreuses instances Discourse « ouvertes », aucune authentification ne serait requise. Dans certains cas, une clé API devrait être fournie.)

  • Le contenu JSON est téléchargé depuis l’URL en ajoutant .json, et la clé raw de cet objet JSON contient le Markdown sous forme de chaîne de caractères entourée de guillemets doubles.

  • Il faudrait ajouter des métadonnées YAML Jekyll au Markdown, et effectuer un nettoyage tel que la suppression des guillemets d’encadrement et le remplacement des sauts de ligne \\n.

  • Jekyll génère ces pages entières en HTML, ou vous pourriez les inclure dans d’autres pages via {{include file | markdownify }}.

Pourquoi s’en donner la peine ?

  • Cela rend beaucoup plus facile pour un éditeur ou un mainteneur non technique de mettre à jour un site statique.

  • Idéal si vous avez déjà un Discourse et souhaitez créer un site web statique, par exemple pour une entreprise.

  • Les sites statiques sont peu coûteux, fiables et sécurisés.

  • Pourquoi ne pas utiliser Page Publishing ? Quand je l’ai essayé, les pages semblent nécessiter beaucoup de travail pour bien paraître. Jekyll offre plus de contrôle et permet, bien sûr, de mélanger des sources de contenu gérées par Discourse et non gérées par Discourse.

Qu’en pensez-vous, communauté ? Cela vaut-il la peine d’être poursuivi ?

Cela vaut tout à fait la peine d’être poursuivi. Mais je suis partial : j’ai travaillé sur un projet similaire il y a quelques années, comme projet personnel.

L’objectif n’était pas seulement de pouvoir créer un site Jekyll à partir de contenu sélectionné dans Discourse, mais aussi de pouvoir le publier sous forme de livre électronique (epub ou pdf) (ce qui est ma réponse à la question « pourquoi ne pas utiliser la publication de pages »).

J’ai suivi à peu près la même approche avec un fichier yml et un tableau d’URL de publications.
Les images posaient un problème, mais j’ai encore le code Python qui récupère tous les liens upload://, les décode, télécharge et redimensionne les images, puis remplace les liens par des URL d’images locales.

Je n’ai jamais terminé le projet, mais je serais certainement intéressé à le reprendre et à contribuer avec les quelques éléments que j’avais déjà réalisés.

Merci ! Je verrai si je peux y consacrer du temps au cours des prochains mois.

Je suppose que vous n’avez pas le code dans un dépôt GitHub ?

J’ai examiné cela plus en détail et il semble que seul le code relatif aux images vaille la peine d’être conservé. Veuillez ne pas tenir compte du style de code (ou de son absence).
J’ai créé un gist : retrieve images from a raw discourse post · GitHub

Cela semble amusant. J’ai un client qui a un peu fait la même chose en utilisant des balises pour permettre aux utilisateurs de générer des CV (bien que tout soit simplement rendu dans Discourse).

Voir également https://meta.discourse.org/posts/1001736/raw

Encore mieux, merci !