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 impedirti di provare Discourse all’interno di un iframe, ma come avvertito in altri argomenti… ci si aspetta che sia fragile e problematico… e non intendiamo dedicare tempo a risolvere problemi relativi agli iframe.

Potrebbe essere meglio utilizzare il tempo per descrivere in dettaglio i problemi che incontri quando crei temi per Discourse, così da poterti aiutare e/o migliorare il processo. Abbiamo migliorato molto la creazione di temi negli ultimi anni ed è qualcosa che vogliamo sicuramente supportare e migliorare dove possibile.

Ci sono elementi che sono decisamente più difficili da personalizzare rispetto ad altri, e l’intestazione ne è uno. 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 desideri inserire contenuti nell’intestazione, dovrai utilizzare quel sistema anziché aggiungere contenuti prima o dopo di essa dall’interfaccia di amministrazione (trattato brevemente nella sezione API avanzata per plugin di Developing Discourse Themes & Theme Components). Ci sono anche alcuni ottimi esempi di manipolazione del contenuto dell’intestazione in componenti di tema esistenti su Customization > Theme component, come Custom Header Links.

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