Insertar comentarios de Discourse en otro sitio web mediante 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 Me gusta

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 Me gusta

Hola, he estado luchando para asociar las publicaciones de mi blog con las publicaciones del foro utilizando este método. Parece que tengo problemas similares a los de otros usuarios aquí con la política de seguridad de contenido del iframe. Mi blog es generado por Jekyll y está alojado por GitHub, y mi Discourse está alojado por Digital Ocean. Sus direcciones son blendertube . com y forum.blendertube . com respectivamente.

Aquí está el error reportado en mi navegador:

Se denegó el frame de ‘forum.blendertube.com/’ porque un ancestro viola la siguiente directiva de Política de Seguridad de Contenido: “frame-ancestors ‘self’ blendertube.com”.

¿Tiene esto algo que ver con SSL para mi instancia de Discourse?

Aquí hay algunas capturas de pantalla:

Espero que puedan ayudar. ¡Gracias!

1 me gusta

Aquí hay otra captura de pantalla:

1 me gusta

¿Alguien tiene una idea de cuál sería la sintaxis para reemplazar “current_page.url” con la URL de una página de producto de WordPress WooCommerce? Nos gustaría hacer esto para no tener que personalizar el código para cada página y poder aplicarlo fácilmente a todas las páginas.

Intenté reemplazar el valor de nuestro propio dominio para discourseEmbedUrl: 'http://eviltrout.com<%= current_page.url %>, pero esto no funcionó en WP.

1 me gusta

Creo que lo que podríamos necesitar aquí es la nueva etiqueta noindex, indexifembedded

Editar @codinghorror pensó que esta era una buena idea cuando surgió para un caso de uso similar (la incrustación de temas)

2 Me gusta

No puedo averiguar si/cómo es posible lo siguiente:

Cuando el tema predeterminado de la instancia de discourse es Oscuro, ¿cómo puede ser Claro el incrustado?

Si mis navegadores no están estropeados, parece que la implementación de @codinghorror es así. ¿Cómo se hace de forma elegante? :smiley:

2 Me gusta

Tenga en cuenta que si alguien más intenta esto, discourseEmbedUrl no me funcionó al intentar incrustar Temas directamente en las lecciones correspondientes de Thinkific LMS, pero el método topicId sí funcionó.

1 me gusta

Estaba utilizando esta función para incrustar comentarios de Discourse en nuestro blog. Inicialmente funcionaba perfectamente. Recientemente noté que los blogs más nuevos (\u003c1 yrs :rofl:) parecen tener algún problema donde la “slug” (identificador corto) no se crea como en este caso, lo que resulta en un enlace incorrecto.

El método de generación de “slug” está configurado como “ascii” y el host permitido está configurado como “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>

Reafirmando lo obvio, pero el problema que noto es que los temas creados por la incrustación no tienen ni la “slug” ni el título poblados. Todavía no estoy seguro de por qué me encuentro con este problema.

1 me gusta

Hola a todos, disculpen si esta es una pregunta tonta -

Por lo que veo, la experiencia integrada solo permite leer algunas publicaciones en un hilo, pero no interactuar con ellas dentro del sitio web, ¿verdad? Te devuelve a Discourse cuando intentas cargar más comentarios / responder o hacer clic en un perfil.

¿Existe una versión de la experiencia integrada que viva completamente en un sitio web de terceros (no en Discourse)?

Cuando mi sitio cambia entre el modo oscuro y el modo claro, ¿cómo podría notificar a la parte incrustada para que cambie el modo de color?

Configuré los Hosts permitidos de incrustación de la siguiente manera


Pero cuando intento añadir una clase al cuerpo del iframe, encuentro que iframe.contentDocument es nulo, y si uso document.getElementById("discourse-embed-frame").contentWindow.document, el error es el siguiente:
image

¿Cómo puedo proporcionar una cadena específica en el sitio que incrusta el iframe para que Discourse la use como título (o al menos para la parte de la URL) del hilo creado? Tengo URL de incrustación como example.com/12345 con contenido textual y los hilos terminan usando palabras del contenido, mientras que me gustaría “12345”.

¿No está leyendo la etiqueta \u003ctitle\u003e del documento?

Ah, eso tendría sentido. Sin embargo, mis títulos son más elegantes que el “12345” y podrían cambiar con el tiempo, mientras que el “12345” se mantendría estable. Por eso me gustaría usar eso en su lugar.

He estado probando un poco: el scraper está tomando efectivamente el <title>text</title>. Configurar a <title>12345</title> y anularlo para clientes humanos usando un <script>document.title = "fancy title";</script> al final del documento HTML funciona bien. El hilo creado está usando “12345” como título y URL slug mientras que los humanos ven un título agradable en la página donde se está incrustando.

¡Gracias por la pista!

2 Me gusta

Hola a todos,

¿Me gustaría saber si es posible obtener publicaciones de cualquier tema por #etiqueta?
Por ejemplo, en el sitio web principal (que no es Discourse) tenemos una página definida por su nombre, llamémosla “Mi programa” (/myshow)

En el mismo, en nuestra instancia de Discourse tenemos muchos temas sobre “El Programa”, tienen el mismo hashtag #elprograma y la gente puede navegar por ellos según las temporadas o los eventos.

La idea es poder obtener las últimas publicaciones de todos los temas con la etiqueta #elprograma. ¿Es posible hacerlo?

Lo más parecido que tenemos es obtener todos los temas ordenados por actividad bajo una etiqueta específica, consulta Embedding a list of Discourse Topics in another site.

2 Me gusta

¿Cómo evitar la primera publicación en comentarios incrustados como el blog de Jeff?

EDITAR: Estaba usando arivanandan/discourse-embed-complete: Incluye la primera publicación al incrustar discourse :slightly_smiling_face:

¿Qué pasa si quiero incrustar comentarios de varios temas en una sola página? ¿Cómo lo hago?