Incorporare un intero forum Discourse su un altro sito in un iframe

Questo è già stato discusso in altri due thread, ma sono bloccati:

Alcuni sostengono che dovremmo invece lavorare sul rebranding di Discourse per adattarlo al design di un sito esistente.

Per esperienza, questo è molto difficile da realizzare. Il markup e il CSS per quel markup sono molto complessi da gestire e poco flessibili. Ad esempio, gli alberi DOM tra l’intestazione di Discourse e il contenuto principale sono molto diversi tra loro. Inserire contenuti nell’intestazione (nell’editor integrato di Discourse) posiziona i contenuti inseriti molto lontano dall’intestazione effettiva di Discourse, per fare un esempio.

Credetemi, è piuttosto difficile semplicemente “far seguire a Discourse il tema del tuo sito principale”.

Quello che vorrei provare ora è incorporare Discourse in un <iframe>. Vediamo come va.


Richiesta di funzionalità! Sarebbe fantastico se Discourse potesse essere utilizzato come un insieme di elementi personalizzati. Ad esempio:

<!-- ... qualche markup personalizzato ... -->

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

<!-- ... qualche markup personalizzato ... -->

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

Ciò permetterebbe di incorporare le parti di Discourse ovunque in un sito, e gli elementi si connetterebbero al backend specificato.

Visitando direttamente http://url.to/actual/discourse/instance si aprirebbe Discourse nel modo normale come applicazione web autonoma.

In sostanza, questo renderebbe le parti di Discourse utilizzabili all’interno di strutture HTML generali (come i partiali dei template Handlebars, ma in modo futuro e basato sugli standard web).

Immaginate solo cosa sarebbe possibile con una tale funzionalità (pensate a quando gli elementi personalizzati hanno valori diversi per gli attributi backend)…

Certamente non possiamo impedirvi di provare Discourse in un iframe, ma come avvertito in altri argomenti, ci si aspetta che sia fragile e problematico… e non intendiamo dedicare tempo alla risoluzione di problemi relativi agli iframe.

Potrebbe essere un uso migliore del tempo descrivere in dettaglio i problemi che incontrate quando create i temi per Discourse, così da potervi aiutare e/o migliorare il processo. Abbiamo notevolmente migliorato la creazione dei temi negli ultimi anni ed è qualcosa che vogliamo sicuramente supportare e migliorare, ove possibile.

Ci sono elementi decisamente più complessi da personalizzare rispetto ad altri, tra cui l’intestazione. Questo perché è stato implementato un Virtual DOM per migliorare le prestazioni (A tour of how the Widget (Virtual DOM) code in Discourse works).

Quindi, se intendete inserire contenuti nell’intestazione, dovrete utilizzare quel sistema anziché aggiungere contenuti prima/dopo di essa dall’interfaccia di amministrazione (trattato brevemente nella sezione avanzata dell’API dei plugin di Developing Discourse Themes & Theme Components). Ci sono anche alcuni ottimi esempi di manipolazione dei contenuti dell’intestazione in componenti #theme-component esistenti, come Custom Header Links.

Sarebbe bello averlo e vedo che ancora non funziona; quando provo, ottengo solo