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 une iframe, mais comme cela a été signalé dans d’autres sujets, cela s’avère généralement 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 que vous rencontrez lors de la personnalisation des thèmes 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 un domaine que nous souhaitons absolument soutenir et améliorer dans la mesure du possible.

Certains éléments sont nettement plus complexes à personnaliser que d’autres, notamment l’en-tête. Cela s’explique par le fait qu’un DOM virtuel a été mis en œuvre 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 ou après celui-ci depuis l’interface d’administration (ce qui est brièvement abordé dans la section sur l’API avancée 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 #theme-component existants, comme Custom Header Links.

9 « J'aime »

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

1 « J'aime »