Intégrer un forum Discourse entier sur un autre site dans une iframe

Cela a déjà été discuté dans deux autres sujets, mais ils sont verrouillés :

Certaines personnes suggèrent que nous devrions plutôt travailler sur le rebranding de Discourse pour qu’il corresponde au design d’un site existant.

D’après mon expérience, c’est très difficile à réaliser. Le balisage et le CSS associé sont très complexes à manipuler et manquent de flexibilité. Par exemple, les arbres DOM de l’en-tête de Discourse et du contenu principal sont très différents l’un de l’autre. Insérer du contenu dans l’en-tête (via l’éditeur intégré de Discourse) place ce contenu très loin de l’en-tête réel de Discourse, par exemple.

Croyez-moi, il est tout à fait difficile de simplement « faire en sorte que votre Discourse suive le thème de votre site principal ».

Ce que je souhaiterais essayer ensuite, c’est d’intégrer Discourse dans une balise <iframe>. Voyons comment cela se passe.


Proposition de fonctionnalité ! Ce serait formidable si Discourse pouvait être consommé sous forme d’éléments personnalisés. Par exemple :

<!-- ... du balisage personnalisé ... -->

<discourse-actions backend="http://url.to/actual/discourse/instance">

<!-- ... du balisage personnalisé ... -->

<discourse-main backend="http://url.to/actual/discourse/instance">

Cela permettrait d’intégrer les composants de Discourse n’importe où dans un site, et ces éléments se connecteraient au backend spécifié.

Accéder directement à http://url.to/actual/discourse/instance ouvrirait Discourse normalement, en tant qu’application web autonome.

En résumé, cela rendrait les parties de Discourse utilisables au sein de structures HTML globales (comme des fragments de modèles Handlebars, mais de manière pérenne, basée sur les standards du web).

Imaginez simplement ce qui serait possible avec une telle fonctionnalité (pensez à des éléments personnalisés ayant différentes valeurs pour les attributs backend)…

Nous ne pouvons certes pas vous empêcher d’essayer Discourse dans un iframe, mais comme cela a été signalé dans d’autres sujets… il est prévu que cela soit fragile et problématique… et nous n’avons pas l’intention de consacrer du temps à résoudre les problèmes liés aux iframes.

Il serait peut-être plus judicieux de décrire en détail les problèmes auxquels vous êtes confronté lors de la personnalisation du thème de Discourse, afin que nous puissions vous aider et/ou améliorer le processus. Nous avons considérablement amélioré la personnalisation des thèmes au cours des deux dernières années, et c’est quelque chose que nous souhaitons vraiment soutenir et améliorer autant que possible.

Certains éléments sont effectivement plus difficiles à personnaliser que d’autres, notamment l’en-tête. Cela s’explique par le fait qu’un DOM virtuel a été implémenté pour améliorer les performances (A tour of how the Widget (Virtual DOM) code in Discourse works).

Ainsi, si vous souhaitez insérer du contenu dans l’en-tête, vous devrez utiliser ce système plutôt que d’ajouter du contenu avant/après celui-ci depuis l’interface d’administration (cette approche est abordée dans la section avancée de l’API des plugins de Developing Discourse Themes & Theme Components). Il existe également de bons exemples de manipulation du contenu de l’en-tête dans des composants de thème Customization > Theme component existants, comme Custom Header Links.

Ce serait bien d’avoir cette fonctionnalité, et je constate qu’elle ne fonctionne toujours pas lorsque j’essaie : je reçois simplement