Ein ganzes Discourse-Forum in einem <iframe> auf einer anderen Website einbetten

Dies wurde bereits in zwei anderen Threads diskutiert, die jedoch gesperrt sind:

Einige Leute sagen, wir sollten stattdessen daran arbeiten, Discourse neu zu branden, um das Design einer bestehenden Website zu übernehmen.

Aus Erfahrung ist dies sehr schwierig umzusetzen. Das Markup und das CSS für dieses Markup sind sehr komplex zu bearbeiten und nicht flexibel. Als Beispiel: Die DOM-Bäume zwischen der Discourse-Header-Leiste und dem Hauptinhalt unterscheiden sich stark voneinander. Das Einfügen von Header-Inhalten (im integrierten Editor von Discourse) platziert den eingefügten Inhalt beispielsweise sehr weit entfernt vom eigentlichen Discourse-Header.

Glauben Sie mir, es ist ziemlich schwierig, einfach „Ihren Discourse Ihrem Hauptwebsite-Design anzupassen“.

Was ich als Nächstes versuchen möchte, ist das Einbetten von Discourse in ein <iframe>. Mal sehen, wie das funktioniert.


Feature-Anfrage! Es wäre toll, wenn Discourse als eine Reihe von benutzerdefinierten Elementen konsumiert werden könnte. Zum Beispiel:

<!-- ... einige benutzerdefinierte Markup-Elemente ... -->

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

<!-- ... einige benutzerdefinierte Markup-Elemente ... -->

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

Dies würde es ermöglichen, Teile von Discourse überall auf einer Website einzubetten, und die Elemente würden mit dem angegebenen Backend verbunden.

Der direkte Besuch von http://url.to/actual/discourse/instance würde Discourse auf die übliche Weise als eigenständige Webanwendung öffnen.

Im Grunde würde dies die Nutzbarkeit von Discourse-Teilen innerhalb übergeordneter HTML-Strukturen ermöglichen (wie Handlebars-Template-Partials, aber auf eine zukunftssichere Weise, die auf Webstandards basiert).

Stellen Sie sich vor, was sonst noch mit einer solchen Funktion möglich wäre (denken Sie an den Fall, dass benutzerdefinierte Elemente unterschiedliche Werte für das Attribut backend haben)…

Wir können Sie natürlich nicht davon abhalten, Discourse in einem Iframe zu verwenden. Wie jedoch in anderen Themen bereits erwähnt, wird dies als fehleranfällig und problematisch eingestuft, und wir beabsichtigen nicht, Zeit damit zu verbringen, iframespezifische Probleme zu lösen.

Es wäre möglicherweise besser, Ihre Zeit damit zu verbringen, die Probleme im Detail zu beschreiben, auf die Sie beim Thematieren von Discourse stoßen, damit wir Ihnen helfen und/oder den Prozess verbessern können. Wir haben das Thematieren in den letzten Jahren erheblich verbessert, und dies ist etwas, das wir unbedingt unterstützen und wo möglich weiterentwickeln möchten.

Es gibt Elemente, die definitiv schwieriger anzupassen sind als andere, wobei die Kopfzeile eines davon ist. Dies liegt daran, dass ein virtueller DOM implementiert wurde, um die Leistung zu verbessern (A tour of how the Widget (Virtual DOM) code in Discourse works).

Wenn Sie also Inhalte in die Kopfzeile einfügen möchten, müssen Sie dieses System nutzen, anstatt Inhalte vor oder nach der Kopfzeile über die Admin-Oberfläche hinzuzufügen (dies wird im Abschnitt zur erweiterten Plugin-API unter Developing Discourse Themes & Theme Components etwas behandelt). Es gibt auch einige gute Beispiele für die Manipulation von Kopfzeileninhalten in bestehenden #theme-Komponenten, wie zum Beispiel unter Custom Header Links.

9 „Gefällt mir“

Das wäre schön zu haben, und ich sehe, es funktioniert immer noch nicht. Wenn ich es versuche, erhalte ich nur

1 „Gefällt mir“