Esponi external_id in embed.js

Ho bisogno di caricare post su un sito esterno dove non conosco il post_id ma CONOSCO l’external_id che ho configurato quando ho creato l’argomento.

Qualcuno può esporre la variabile external_id nella logica di embed.js o insegnarmi cosa mi manca?

Esempio di supporto necessario:

window.DiscourseEmbed = {
discourseUrl: ‘https://forums.blah.org/’,
external_id: ‘2023-4’
};

Presumo che tu abbia creato gli argomenti tramite l’API e impostato il parametro external_id.

Non sono sicuro se questo aiuti, ma Discourse ha una route t/external_id/:external_id. Sembra che restituisca solo dati JSON:

Quindi puoi ottenere il JSON dell’argomento a (ad esempio)

/t/external_id/2023-4.json

Ciò restituirebbe il contenuto e l’id dell’argomento Discourse. Non credo che questo risolva il tuo problema, però.

Sto testando ora, vengono restituiti dati JSON, ma Discourse esegue un reindirizzamento automatico all’URL effettivo dell’argomento Discourse quando effettui la richiesta. Ad esempio, una richiesta GET a http://localhost:4200/t/external_id/1.json mi reindirizza a http://localhost:4200/t/testing-the-external-id-param/206.json

Vorrei avere qualcosa nel formato di post incorporati. Discourse fa già un ottimo lavoro con quel layout e non voglio reinventare la ruota.

Non consentendo la ricerca tramite external_id, dovrei memorizzare l’ID dell’argomento del forum nel mio database e cercare in quel modo. Sembra ridondante quando abbiamo già una variabile univoca memorizzata in external_id quando ho creato l’argomento dall’API.

1 Mi Piace

Penso di aver capito ora. Vuoi usare lo script mostrato qui: https://meta.discourse.org/t/embed-discourse-comments-on-another-website-via-javascript/31963#alternate-configuration-linking-to-existing-topics-6. Ma invece di usare il parametro topicId vuoi usare il parametro external_id.

Forse questo potrebbe essere aggiunto come funzionalità.

Potrebbe anche essere possibile effettuare una richiesta sul client a (ad esempio)
http://localhost:4200/t/external_id/1.json
Quindi estrarre l’URL effettivo dell’argomento dalla risposta e analizzare quell’URL per estrarre l’id dell’argomento, o effettuare una seconda richiesta all’URL dell’argomento per ottenere l’id dell’argomento.
Ciò sembra probabilmente incline all’errore.

Se stai aggiungendo lo script di incorporamento sul server invece che sul client, potresti semplicemente effettuare una richiesta GET a http://localhost:4200/t/external_id/1.json, eseguire le azioni necessarie per ottenere l’id dell’argomento di Discourse, quindi inserire lo script nella tua pagina web usando quell’id.

Questo è un buon feedback e mi dà degli spunti su cui riflettere. La richiesta di funzionalità è la più semplice, ma mi piacciono alcune delle tue idee a cui non avevo pensato!

1 Mi Piace