Incorpora i commenti Discourse su un altro sito web tramite Javascript

I believe this is possible now. The embed_url property can be set when you first create the topic. Our WordPress plugin does that here: wp-discourse/lib/discourse-publish.php at main · discourse/wp-discourse · GitHub. The embed_url property cannot be updated via the API after the topic has been created.

3 Mi Piace

That’s fantastic! Looks like the API docs need to be updated then!

What would it take to get the property added to the update API method? That would let me solve this properly.

4 Mi Piace

Ciao, ho difficoltà ad associare i post del mio blog ai post del forum usando questo metodo. Sembra che stia avendo problemi simili ad altri utenti qui con la content-security-policy dell’iframe. Il mio blog è generato da Jekyll ed è ospitato da github e il mio discourse è ospitato da Digital Ocean. I loro indirizzi sono rispettivamente blendertube . com e forum.blendertube . com.

Ecco l’errore segnalato nel mio browser:

Rifiutato di incorporare ‘forum.blendertube.com/’ perché un antenato viola la seguente direttiva Content Security Policy: “frame-ancestors ‘self’ blendertube.com”.

Ha qualcosa a che fare con ssl per la mia istanza discourse?

Ecco alcuni screenshot:

Spero possiate aiutarmi. Grazie!

1 Mi Piace

Ecco un altro screenshot:

1 Mi Piace

Qualcuno ha un’idea di quale sarebbe la sintassi per sostituire “current_page.url” con l’URL di una pagina prodotto di WordPress WooCommerce? Vorremmo farlo in modo da non dover personalizzare il codice per ogni pagina e poterlo applicare facilmente a tutte le pagine.

Ho provato a sostituire il nostro valore di dominio per discourseEmbedUrl: 'http://eviltrout.com<%= current_page.url %> ma questo non ha funzionato su WP.

1 Mi Piace

Penso che ciò di cui potremmo aver bisogno qui sia il nuovo tag noindex, indexifembedded

Modifica @codinghorror ha pensato che fosse una buona idea quando è emersa per un caso d’uso simile (l’incorporamento dell’argomento)

2 Mi Piace

Non riesco a capire se/come sia possibile quanto segue:

Quando il tema predefinito dell’istanza di discourse è Scuro, come può quello incorporato essere Chiaro?

Se i miei browser non sono incasinati, sembra che l’implementazione di @codinghorror sia proprio così. Come viene fatto in modo elegante? :smiley:

2 Mi Piace

Se qualcun altro dovesse provare, discourseEmbedUrl non ha funzionato per me quando ho cercato di incorporare argomenti direttamente nelle lezioni corrispondenti di Thinkific LMS, ma il metodo topicId ha funzionato.

1 Mi Piace

Stavo usando questa funzionalità per incorporare commenti di Discourse sul nostro blog. Inizialmente funzionava perfettamente. Di recente ho notato che i blog più recenti (\u003c1 yrs :rofl:) sembrano avere qualche problema in cui lo slug non viene creato come nel caso di questo, con conseguente collegamento ipertestuale errato.

Il metodo di generazione dello slug è impostato su ascii e l’host consentito è impostato come www.gyandhan.com

<script type="text/javascript">
  DiscourseEmbed = { discourseUrl: 'https://discussions.gyandhan.com/',
                     discourseEmbedUrl: '<%= request.original_url.split('?').first %>' };

  (function() {
    var d = document.createElement('script'); d.type = 'text/javascript'; d.async = true;
    d.src = DiscourseEmbed.discourseUrl + 'javascripts/embed.js';
    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d);
  })();
</script>

Ribadisco l’ovvio, ma il problema che noto è che gli argomenti creati dall’incorporamento non hanno né lo slug né il titolo popolati. Non sono ancora sicuro del motivo per cui sto riscontrando questo problema.

1 Mi Piace

Ciao a tutti, scusate se questa è una domanda banale -

Da quello che vedo, l’esperienza incorporata consente solo di leggere alcuni post in un thread, ma non di interagire con esso all’interno del sito web, giusto? Ti riporta a discourse quando provi a caricare altri commenti / rispondere o fare clic su un profilo

Esiste una versione dell’esperienza incorporata che vive interamente su un sito web di terze parti (non su discourse)?

Quando il mio sito passa dalla modalità scura a quella chiara, come posso notificare alla parte incorporata di cambiare la modalità colore?

Ho configurato Embedding Allowed Hosts come segue


Ma quando provo ad aggiungere una classe al body dell’iframe, scopro che iframe.contentDocument è null e se uso document.getElementById("discourse-embed-frame").contentWindow.document, l’errore è il seguente:
image

Come posso fornire una stringa specifica nel sito che incorpora l’iframe per Discourse da utilizzare come titolo (o almeno per lo slug) per il thread creato? Ho URL di embedding come example.com/12345 con contenuto testuale e i thread finiscono per utilizzare parole dal contenuto, mentre vorrei “12345”.

Non sta leggendo il tag <title> dal documento?

Ah, questo avrebbe senso. I miei titoli sono più fantasiosi di “12345”, ma potrebbero cambiare nel tempo mentre “12345” rimarrebbe stabile. Ecco perché vorrei usare quest’ultimo.

Ho testato un po’: lo scraper sta effettivamente prendendo il <html><title>testo</title></html>. Impostarlo su <html><title>12345</title></html> e sovrascriverlo per i client umani usando uno <html><script>document.title = "titolo accattivante";</script></html> in fondo al documento HTML funziona bene. Il thread creato sta usando “12345” come titolo e URL slug mentre gli umani vedono un bel titolo sulla pagina in cui avviene l’embedding.

Grazie per il suggerimento!

2 Mi Piace

Ciao a tutti,

Vorrei sapere se è possibile recuperare post da qualsiasi argomento tramite #tag?
Ad esempio, sul sito web principale (non Discourse) abbiamo una pagina definita dal suo nome, chiamiamola “My show” (/myshow)

Allo stesso modo, nella nostra istanza Discourse abbiamo molti argomenti su “The Show”, hanno lo stesso hashtag #theshow e le persone possono navigarli in base alle stagioni o agli eventi.

L’idea è di poter recuperare gli ultimi post da tutti gli argomenti con il tag #theshow. È possibile farlo?

La cosa più vicina che abbiamo è recuperare tutti gli argomenti ordinati per attività sotto un tag specifico, controlla Embedding a list of Discourse Topics in another site.

2 Mi Piace

Come impedire il primo post nei commenti incorporati come il blog di Jeff?

MODIFICA: Stavo usando arivanandan/discourse-embed-complete: Include first post while embedding discourse :slightly_smiling_face:

Cosa succede se voglio incorporare i commenti di più argomenti in un’unica pagina? Come posso farlo?