¿Existe alguna forma de encontrar el ID del tema asociado o la URL de Discourse para una página determinada con incrustación de Discourse? Me gustaría proporcionar la URL de Discourse para nuestra discussionUrl de schema.org en JSON-LD que incluimos en nuestras páginas con comentarios incrustados. Por ejemplo,
Hola a todos: he estado siguiendo este tema y tratando de entender cómo funciona la función “Los temas importados estarán ocultos hasta que haya una respuesta”.
Básicamente, he incrustado con éxito un tema de Discourse en una página web, pero quiero que la página incrustada muestre todas las publicaciones del tema, no solo las respuestas a la publicación original.
¿No debería hacer esto la opción “Los temas importados estarán ocultos hasta que haya una respuesta”? He probado habilitar y deshabilitar esta opción y la opción “recortar publicaciones”, pero no noto ninguna diferencia en ninguno de los casos.
¿Alguna sugerencia? Gracias de antemano.
_Chal
Actualización: encontré este tema junto con un plugin de Discourse escrito por @arivanandan (¡gracias!). Intentaré implementarlo y publicaré una actualización para el registro.
Actualización 2: ¡El plugin funciona! ¡Muchísimas gracias de nuevo a @arivanandan!
Esto describe nuestro caso de uso actual. Todo funciona como se espera cuando los usuarios han iniciado sesión en ambos sitios.
El problema que tengo es que, si el usuario no ha iniciado sesión en nuestra instancia de Discourse (que no tiene acceso anónimo), no ve nada en la página donde se ha incrustado el componente.
¿Es posible que el componente muestre un mensaje como «Inicia sesión en Discourse para ver la discusión» cuando ocurra esto?
Sin embargo, el comportamiento actual parece extraño, ya que si hay un problema con los inicios de sesión, el usuario no ve nada. ¿Hay alguna razón para no mostrar un enlace de inicio de sesión que redirija al sitio de Discourse?
Estoy experimentando el mismo problema. Sería agradable ver los comentarios incrustados incluso si el sitio está configurado en modo privado. En general, me encanta Discourse, y la capacidad de agregar los comentarios a Ghost es una ventaja.
¿Existe alguna forma de pasar un ID de div único cada vez que se ejecuta el script? Tengo carga de contenido asíncrono debajo de mi artículo principal y me gustaría que los comentarios también aparezcan en esos elementos. Por supuesto, el problema con la configuración actual es que todos se muestran en el div con el ID ‘discourse-comments’.
Lo siento, ¿puedes ser más claro sobre qué quieres decir con eso? No soy desarrollador de Ruby, así que lamentablemente ese código no saldrá de mí. Lo probé una vez, pero no llegué muy lejos.
De hecho, pagaría por que se añadiera esta funcionalidad. ¿Crees que publicar en el marketplace sería la mejor opción para eso? Gracias.
Nos gustaría usarla pronto, pero tenemos más de 30.000 blogs en nuestro sitio web. No queremos que todos aparezcan en el foro sin comentarios. Como los blogs se insertan como temas OnLoad, me pregunto si hay una manera de insertarlos en el foro después de hacer clic en un botón en el código incrustado, por ejemplo, para que no se carguen todos los blogs al visitar la página (por ejemplo, desde Google).
Creo que nuestra nueva página de vista general de temas se inundará de blogs (para nuestros administradores, ya que para los usuarios normales del foro comenzarán como invisibles).
No existe tal función. La capacidad de crearlas como no listadas se agregó para abordar este caso de uso específico, pero entiendo cómo incluso eso podría ser insuficiente frente a 30.000 blogs.
¿Quizás podrías escribir un script para importar manualmente el historial con las fechas originales de los publicaciones?
Tengo otra pregunta. Ahora lo estamos utilizando, pero tenemos artículos con enlaces nofollow. En el foro, los enlaces son dofollow (el nofollow ha desaparecido).
¿Es algo que podemos corregir? ¿O es suficiente con el canonical para que no se sigan los enlaces en el artículo del tema?
No estoy 100 % seguro de si Google ignoraría el contenido marcado con nosnippet, o si simplemente les indica que no lo muestren en la vista previa de los resultados de búsqueda (SERP).
Escribí algunos scripts para migrar los comentarios de nuestro blog desde Disqus al foro de Discourse, y al hacerlo, creé una serie de temas utilizando la API de Discourse en lugar de dejar que esta integración los generara. Para las publicaciones antiguas, estoy utilizando el método de incrustación topicId, y para las nuevas publicaciones, a partir de ahora, se utiliza el método discourseEmbedUrl.
Sin embargo, tengo un problema extraño donde algunos temas nuevos se están creando de todos modos. (Sospecho que esto se debe a un error de mi parte cuando brevemente algunos topicId faltaban en algunas publicaciones y esas son las que se están creando como duplicados). Aunque no creo que haya ninguna solución para mí en este momento, me gustaría proponer una solución para el futuro.
Dado que el controlador de incrustación intenta buscar una publicación existente por la columna de base de datos embed_url, me gustaría ver una propiedad de la API para establecer ese campo al crear un tema. Esto permitiría que mi script de importación establezca esta propiedad para el tema. Entonces, la integración ni siquiera necesitaría preocuparse por cambiar entre los campos topicId y discourseEmbedUrl en el JS.
Acabo de rastrear el origen de este problema con el plugin de incrustación (embed). Al configurar la incrustación, existe una configuración llamada “Hosts permitidos”, que luego establece la Política de Seguridad de Contenido (CSP) para el iframe, de modo que el iframe solo se mostrará en ese host. Por ejemplo, si configuro las incrustaciones con un host permitido de example.com e intento incrustar el JS en attacker.com, el iframe se niega a cargar con el siguiente error:
Se ha denegado la carga del marco 'https://forum.example.com/' porque un ancestro viola la siguiente directiva de Política de Seguridad de Contenido: "frame-ancestors 'self' https://example.com".
Sin embargo, en este punto, el JS ya se ha ejecutado y ha creado un tema en el foro con la URL que se proporcionó al código de incrustación.
Lo que está ocurriendo en mi caso es que utilizamos Netlify para previsualizar las compilaciones, por lo que una copia del blog se está sirviendo realmente desde URLs de netlify.app, las cuales cargan ese embed.js y crean el hilo del foro para las publicaciones que importé incorrectamente con anterioridad.
Esto no es necesariamente un problema de seguridad, ya que solo puede crear temas para URLs del sitio web configurado y que coincidan con la lista de permitidos de rutas. Sin embargo, es un problema en esta estrategia de migración, ya que no tenía forma de establecer el embed_url en los hilos del foro al migrar publicaciones antiguas a Discourse.
La solución consiste en agregar una regla CSP para evitar que ese embed.js se ejecute en dominios que no estén configurados bajo la configuración de “hosts permitidos”.
Como prueba de concepto, copié el código de incrustación a un dominio completamente ajeno y establecí el discourseEmbedUrl en una de las publicaciones antiguas que importé. Cargué la página y el iframe fue bloqueado, pero el JS ya se había ejecutado y había creado el hilo del foro.
Si consideras que esto es más un problema de seguridad que un error, estaré encantado de eliminar esta publicación e informarlo a través de HackerOne.