Incorpora commenti di Discourse su un altro sito web tramite Javascript

Il tuo caso d’uso non è certamente supportato nativamente in Discourse e richiederebbe uno sviluppo personalizzato. Ti consiglio di valutare lo sviluppo di un plugin o di ingaggiare un consulente per aiutarti a implementarlo.

2 Mi Piace

Vorrei aggiungere alle Risoluzione dei problemi che, se Discourse non riesce a analizzare il contenuto della tua pagina o del tuo post del blog per creare un nuovo thread, l’incorporamento fallirà (senza fornire alcun avviso). Prova prima a incorporare un argomento specifico, quindi utilizza le opzioni per analizzare la tua pagina.

3 Mi Piace

È fantastico! L’unico intoppo che riscontro è che non riesco a capire come utilizzare il selettore CSS corretto per estrarre il meta-description da usare come primo post.
Ho provato diverse iterazioni come questa. Hai qualche suggerimento?

1 Mi Piace

Se stai cercando di estrarre il contenuto del tag meta dalla sezione head del tuo sito, non credo sia possibile.

2 Mi Piace

Mi rammarico ancora che non si limiti a creare una singola casella per il link fornito nell’incorporamento, invece di eseguire un’importazione più elaborata di testo e potenzialmente immagini.

Di sicuro, per i siti con dati di pagina o layout complessi, qualcuno deve aver pensato a uno scenario in cui l’argomento funga da segnaposto per le discussioni e anche da modo per indirizzare le persone al sito remoto con l’articolo o la storia?

Per favore? :slight_smile:

3 Mi Piace

Quindi stiamo valutando di implementare questa funzionalità su alcuni blog e articoli del nostro sito principale, utilizzando anche il forum. Questa mattina, durante una riunione, il mio responsabile marketing ha detto che si tratta di una cattiva idea, perché ogni post creato sul forum apparirebbe come contenuto duplicato rispetto al nostro blog, dato che hanno lo stesso titolo e mostrano lo stesso primo paragrafo. Lo ha dimostrato con una ricerca su Google basata sull’esempio. Esiste qualcosa di integrato che aiuti a far capire a Google che questi non sono duplicati, oppure potreste aggiungere un tag no index a questi post?

4 Mi Piace

Hmm, è interessante, perché se avessimo aggiunto noindex, anche i commenti non verrebbero indicizzati, il che non è ideale. Esiste un modo per dire a Google: “questa parte della pagina è un duplicato?”?

Potremmo applicarlo all’OP.

1 Mi Piace

Questo era in realtà il mio timore quando ne abbiamo discusso. Non voglio compromettere il valore SEO del blog, ma allo stesso tempo non voglio nascondere le domande e risposte del forum, perché a volte rappresentano un’attrazione tanto importante quanto alcuni articoli del blog. Non sono sicuro di come istruire Google a indicizzare una parte e non l’altra di un post.

Discourse dispone di una configurazione del sito chiamata embed set canonical url. Quando è abilitata, l’URL canonico per i topic incorporati viene impostato sull’URL del contenuto incorporato. Questo aiuterebbe a risolvere il problema dei contenuti duplicati?

1 Mi Piace

Sembra che questo possa aiutare a risolvere il problema. C’è la possibilità che tu conosca qualcuno che sta utilizzando questa funzione, così posso vedere e condividere un esempio?

Un’altra opzione qui sarebbe aggiungere “Commenti su ______” all’inizio del titolo della discussione.

1 Mi Piace

È una questione delicata, perché non posso condividere dettagli sui siti dei nostri clienti. Ci sono ulteriori informazioni su questo argomento in questa discussione: Add option to set canonical_url to embed_url. Ho chiesto in quella discussione se qualcuno volesse fornire dettagli su come l’attivazione dell’impostazione abbia influenzato il loro SEO.

1 Mi Piace

Basta cambiare il titolo? Il contenuto del post verrebbe comunque condiviso.

1 Mi Piace

Per qualche motivo non riesco nemmeno a visualizzare la pagina; anche con Adblock disabilitato, mi viene scritto che deve essere disabilitato.

Un singolo paragrafo di “duplicazione” non è sufficiente a causare problemi di contenuto duplicato, secondo la mia esperienza – dato che hai usato uno screenshot dal mio blog :wink:

È simile a citare un paragrafo da un articolo a caso.

Oggi ho provato a farlo inserendo l’URL della pagina in un div nascosto. Lo script ha semplicemente inserito il link come testo. Purtroppo, nessun Onebox. :frowning:

Sono riuscito a far sì che la funzione di incorporamento acquisisse le mie foto dalla pagina. Il problema era dalla mia parte, poiché il codice utilizzava uno script JavaScript di pre-caricamento/sfondo chiamato lazyload. Una volta rimosso, la creazione dell’argomento è stata in grado di generare qualsiasi immagine impostata nell’area del selettore di classe. Tuttavia…

L’argomento viene creato e funziona correttamente per alcuni minuti. L’immagine è visualizzabile tramite il clic di zoom. Ma dopo alcuni minuti, aggiornando la pagina, l’argomento cambia e al posto dell’immagine appare una riga di testo di caricamento.

![](upload://s9ULowF5G9GnR4SQ1STdj1d9JtO.jpeg)

Sembra che si tratti di un fallimento del caricamento remoto dell’immagine sul server del forum. Avete qualche idea sul motivo per cui ciò potrebbe fallire? Inoltre, se fallisce, perché il sistema non mantiene semplicemente l’URL originale? Sembra strano.

Dovrei aggiungere che non si è trattato di un caso isolato. È successo costantemente in tutti gli argomenti che inizialmente contenevano l’immagine (circa 10+ argomenti).

[aggiornamento: La soluzione alternativa per questo problema è stata aggiungere i miei siti alla blacklist dei siti da cui non scaricare immagini. In questo modo, l’HTML le acquisisce direttamente dal sito remoto. Funziona per me.]

1 Mi Piace

Possiamo impedire la creazione di nuovi argomenti quando l’URL cambia (per gli aggiornamenti del titolo del blog)?

1 Mi Piace

Sì, ma il software del tuo blog dovrà tenere traccia dell’ID del topic creato nella prima chiamata e passarlo come parametro nelle successive richieste di incorporamento.

Vedi “Collegamento a topic esistenti” nell’OP.

3 Mi Piace

Non riesco a incorporare tramite TypeScript in Angular. Aiutatemi per favore.

let window: any;

window.DiscourseEmbed = { discourseUrl: 'xyz.com',

  topicId: 26 };


let script = this._renderer2.createElement('script');

script.type = "text/javascript";

script.src = window.DiscourseEmbed.discourseUrl + 'javascripts/embed.js';

script.async = true;
this._renderer2.appendChild(this._document.body, script);
1 Mi Piace