Intégrer les commentaires Discourse sur un autre site Web via 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 « J'aime »

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 « J'aime »

Salut, j’ai du mal à associer les articles de mon blog aux publications du forum en utilisant cette méthode. Il semble que j’aie des problèmes similaires à ceux d’autres utilisateurs ici avec la politique de sécurité du contenu de l’iframe. Mon blog est généré par Jekyll et hébergé par GitHub, et mon Discourse est hébergé par Digital Ocean. Leurs adresses sont blendertube.com et forum.blendertube.com respectivement.

Voici l’erreur signalée dans mon navigateur :

Refusé de cadrer ‘forum.blendertube.com/’ car un ancêtre viole la directive de politique de sécurité du contenu suivante : « frame-ancestors ‘self’ blendertube.com ».

Est-ce que cela a quelque chose à voir avec le SSL pour mon instance Discourse ?

Voici quelques captures d’écran :

J’espère que vous pourrez m’aider. Merci !

1 « J'aime »

Voici une autre capture d’écran :

1 « J'aime »

[quote=“eviltrout, post:1, topic:31963”]sur un blog, chaque entrée obtient généralement sa propre page. Pour ce faire, placez le même extrait sur chaque page sur laquelle vous souhaitez afficher des commentaires, mais remplacez la valeur passée à discourseEmbedUrl par l’URL de la page actuelle. Sur mon blog, j’utilise la valeur suivante pour discourseEmbedUrl : 'http://eviltrout.com\u003c%= current_page.url %\u003e' – à mesure que de nouvelles pages de blog sont créées, de nouveaux sujets seront créés automatiquement pour elles sur Discourse.
[/quote]

Quelqu’un a-t-il une idée de la syntaxe pour remplacer « current_page.url » par l’URL d’une page de produit WordPress WooCommerce ? Nous aimerions le faire afin de ne pas avoir à personnaliser le code pour chaque page, et de pouvoir l’appliquer facilement à toutes les pages.

J’ai essayé de remplacer la valeur de notre propre domaine pour discourseEmbedUrl : 'http://eviltrout.com\u003c%= current_page.url %\u003e', mais cela n’a pas fonctionné sur WP.

1 « J'aime »

Je pense que ce dont nous pourrions avoir besoin ici est la nouvelle balise noindex, indexifembedded

Modifier @codinghorror a pensé que c’était une bonne idée quand elle est apparue pour un cas d’utilisation similaire (l’intégration de sujet)

2 « J'aime »

Je n’arrive pas à comprendre si/comment c’est possible :

Lorsque le thème par défaut de l’instance discourse est Sombre, comment l’instance intégrée peut-elle être Claire ?

Si mes navigateurs ne sont pas déréglés, il semble que l’implémentation de @codinghorror soit exactement comme ça. Comment est-ce fait de manière élégante ? :smiley:

2 « J'aime »

Notez que si quelqu’un d’autre essaie ceci, discourseEmbedUrl ne fonctionnait pas pour moi lorsque j’essayais d’intégrer des sujets directement dans des leçons correspondantes de Thinkific LMS, mais la méthode topicId a fonctionné.

1 « J'aime »

J’utilisais cette fonctionnalité pour intégrer des commentaires Discourse sur notre blog. Cela fonctionnait parfaitement au début. J’ai récemment remarqué que les nouveaux blogs (<1 an :rofl:) semblent avoir un problème où le slug n’est pas créé comme dans ce cas, ce qui entraîne un lien hypertexte incorrect.

La méthode de génération de slug est définie sur ascii, et l’hôte autorisé est défini comme 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>

Pour réaffirmer l’évidence, le problème que je rencontre est que les sujets créés par l’intégration n’ont ni le slug ni le titre renseignés. Je ne suis toujours pas sûr de la raison pour laquelle je rencontre ce problème.

1 « J'aime »

Salut à tous, désolé si c’est une question idiote -

D’après ce que je vois, l’expérience intégrée ne permet de lire que certains messages dans un fil de discussion, mais pas d’interagir avec eux sur le site web, n’est-ce pas ? Elle vous ramène à Discourse lorsque vous essayez de charger plus de commentaires / de répondre ou de cliquer sur un profil.

Existe-t-il une version de l’expérience intégrée qui vit entièrement sur un site web tiers (pas sur Discourse) ?

Lorsque mon site bascule entre le mode sombre et le mode clair, comment puis-je en informer la partie intégrée pour qu’elle change de mode de couleur ?

J’ai configuré les hôtes autorisés pour les intégrations comme suit :


Mais lorsque j’essaie d’ajouter une classe au corps de l’iframe, j’ai constaté que iframe.contentDocument est nul, et si j’utilise document.getElementById("discourse-embed-frame").contentWindow.document, l’erreur est la suivante :
image

Comment puis-je fournir une chaîne de caractères spécifique dans le site qui intègre l’iframe pour que Discourse l’utilise comme titre (ou du moins pour le slug) du fil de discussion créé ? J’ai des URL d’intégration comme example.com/12345 avec du contenu textuel et les fils de discussion finissent par utiliser des mots du contenu, alors que je voudrais “12345”.

N’est-ce pas la lecture de la balise <title> du document ?

Ah, cela aurait du sens. Mes titres sont plus fantaisistes que le « 12345 », mais ils peuvent changer avec le temps, tandis que le « 12345 » resterait stable. C’est pourquoi je préférerais utiliser cela.

J’ai testé un peu : le scraper prend bien le <title>text</title>. Le définir sur <title>12345</title> et le remplacer pour les clients humains en utilisant un <script>document.title = "fancy title";</script> en bas du document HTML fonctionne bien. Le thread créé utilise “12345” comme titre et slug d’URL tandis que les humains voient un titre sympa sur la page où l’intégration se produit.

Merci pour l’indice !

2 « J'aime »

Salut tout le monde,

J’aimerais savoir s’il est possible de récupérer des publications de n’importe quel sujet par #tag ?
Par exemple, sur le site principal (hors Discourse) nous avons une page définie par son nom, appelons-la “Mon émission” (/myshow)

Dans le même ordre d’idées, dans notre instance Discourse, nous avons beaucoup de sujets sur “L’émission”, ils ont le même hashtag #theshow et les gens peuvent y naviguer au gré des saisons ou des événements.

L’idée est de pouvoir récupérer les dernières publications de tous les sujets avec le tag #theshow. Est-ce possible ?

Le plus proche que nous ayons est de récupérer tous les sujets triés par activité sous un tag spécifique, consultez Embedding a list of Discourse Topics in another site.

2 « J'aime »

Comment empêcher le premier message sur les commentaires intégrés comme le blog de Jeff ?

EDIT : J’utilisais arivanandan/discourse-embed-complete : Inclut le premier message lors de l’intégration de discourse :slightly_smiling_face:

Et si je voulais intégrer les commentaires de plusieurs sujets sur une seule page ? Comment faire ?