Les centaines de fois où j’ai consulté cette page CSS, et je n’avais jamais remarqué le CSS pour les intégrations…

Les centaines de fois où j’ai consulté cette page CSS, et je n’avais jamais remarqué le CSS pour les intégrations…

J’ai essayé de mettre cela en œuvre aujourd’hui, mais j’ai rencontré quelques problèmes :
La plus grande surprise a été d’apprendre qu’à chaque fois que vous visitez une URL avec une incorporation, un nouveau sujet est créé. C’est dans l’OP :
La seule solution à laquelle je puisse penser est une solution de contournement, s’appuyant sur le SSR/cache à court terme pour interroger le point d’accès d’incorporation :
donc je pense que la logique serait :
vérifier $discourse/embed/info?embed_url=$link
si le sujet existe, afficher l’incorporation comme d’habitude.
sinon, afficher un bouton « démarrer une conversation » qui pointe vers $discourse/new-topic?subject=$link.
Cela fonctionnerait-il, ou y a-t-il un autre lien qui doit être établi ?
Un nouveau sujet est créé uniquement lorsque la page avec l’embed est visitée pour la première fois. Lors des visites ultérieures, il affiche le sujet existant associé à l’URL.
Si vous ne souhaitez pas la création automatique de sujets, vous pouvez créer les sujets via des appels API de la manière qui vous convient le mieux, puis transmettre le topicID à l’embed pour contrôler manuellement l’association.
Compris, c’est brutal pour mon cas car il y a des dizaines de milliers de pages
Comme ça ?
…cela pose aussi quelques problèmes, comme les clics sur les boutons sans engagement de suivi.
Y a-t-il un moyen de ne créer le sujet que lorsqu’un utilisateur a réellement commenté, quelque chose comme ça ? :
$discourse/new-topic?subject=$link.
ou le problème ici est-il que nous ne pouvons pas passer de topicID pour un couplage déterministe ?
Non, il n’est pas possible de répondre à un sujet qui n’existe pas dans Discourse.
Pour répondre à ce besoin, nous avons rendu possible la création de tous les sujets intégrés comme des sujets non répertoriés qui sont automatiquement répertoriés la première fois que quelqu’un répond.
Je pense que la création du sujet nécessitera une requête authentifiée exécutée sur le serveur. Si vous ne voulez pas vous en occuper, une autre approche consisterait à ajouter un bouton à l’interface utilisateur qui déclenche un code similaire à celui-ci (le code qui serait autrement automatiquement ajouté à la balise <head> de la page) : discourse/public/javascripts/embed.js at 581dbca97f2b55c9bbbe40dc3b58a9df7409d77f · discourse/discourse · GitHub. Il s’agit simplement de créer un élément iframe en utilisant ces données :
<div id='discourse-comments'></div>
<meta name='discourse-username' content='DISCOURSE_USERNAME'>
<script type="text/javascript">
DiscourseEmbed = {
discourseUrl: 'http://127.0.0.1:4200/',
discourseEmbedUrl: 'EMBED_URL',
// className: 'CLASS_NAME',
};
</script>
Modification : J’ai dû essayer. Ceci n’est qu’une preuve de concept : discourse-embed-iframe-test/app/routes/triggering-embed-code.tsx at main · scossar/discourse-embed-iframe-test · GitHub. Je ne pense pas que ce soit une bonne solution pour votre problème.
La logique est entièrement côté client (la fonction loader est juste là pour la commodité). Malheureusement, il n’y a pas de bon moyen pour le client de savoir si le sujet existe sur Discourse. Il n’est donc pas possible de personnaliser l’interface utilisateur en fonction de l’existence ou non du sujet. Il existe des moyens de résoudre ce problème, mais cela nécessiterait probablement d’écrire quelque chose dans la base de données de l’application.
Discourse utilise Window: postMessage() pour passer des données de l’iframe au document parent. Par exemple, lorsqu’un lien de réponse est cliqué dans les commentaires intégrés : discourse/app/assets/javascripts/discourse/scripts/embed-application.js at 581dbca97f2b55c9bbbe40dc3b58a9df7409d77f · discourse/discourse · GitHub. Je me demande si un message pourrait être envoyé au document parent pour indiquer qu’un sujet a été créé. Cela permettrait aux sites de faire des choses comme définir des indicateurs de chargement personnalisés, ou d’afficher une interface utilisateur différente selon que le sujet est prêt à recevoir des commentaires ou non.
Je ne pense pas que ce soit nécessaire s’il était possible d’attribuer un lien principal à un nouveau message :
$discourse/new-topic-link?link=$link
Ce qui redirigerait probablement vers le fil de discussion s’il existe déjà et utiliserait la logique existante dans l’administrateur d’intégration. Peut-être avec des modèles ?
Je suppose qu’une autre façon de résoudre ce problème est de rechercher tous les messages qui font référence au lien en question et de faire apparaître les correspondances dans le cadre d’une conversation à l’échelle du site, en les affichant directement sur la page via SSR. Cela pourrait être équivalent étant donné que les intégrations sont en lecture seule de toute façon. Le problème le plus évident serait de choisir le fil de discussion auquel envoyer l’utilisateur lorsqu’il souhaite participer.
edit : si je parviens à trouver comment rechercher des messages par contenu de lien
Je me demande si cette fonctionnalité peut être utilisée pour attaquer un forum Discourse. Plus précisément, est-il possible pour quelqu’un de falsifier la visite de pages sous plusieurs URL d’un hôte et de créer de nombreux sujets ?
Bonjour communauté Discourse !
Je suis ravi de partager un plugin que j’ai développé pour ceux qui utilisent Docusaurus v3 et souhaitent intégrer des commentaires Discourse sur leurs sites.
Ce plugin facilite l’intégration des commentaires Discourse dans votre site Docusaurus v3. Voici quelques fonctionnalités clés :
Si vous utilisez Docusaurus v3 et souhaitez ajouter des commentaires Discourse à votre documentation ou à vos articles de blog, ce plugin simplifie considérablement le processus.
Vous pouvez trouver le plugin sur npm : docusaurus-plugin-discourse-comments
Disons que j’ai un seul hôte intégrable, blog.example.com et une liste d’autorisation de chemin d’accès générique comme /.*.
J’aimerais ajouter une intégration supplémentaire en utilisant le même hôte, mais cette fois avec une liste d’autorisation différente, par exemple /new-release.* et avec une balise supplémentaire, disons releases.
De toute évidence, le sujet de la “nouvelle version” pourrait correspondre aux deux combinaisons d’hôte/chemin, mais laquelle des deux aurait la priorité ? Dans quel ordre les règles sont-elles évaluées ?
Est-il toujours vrai que nous ne pouvons pas intégrer un sujet d’un forum privé sur un hôte distinct ? Mon cas d’utilisation est que nous utilisons Kajabi pour héberger le produit et Discourse comme plateforme de commentaires. Chacun nécessite des identifiants de connexion distincts, donc je suppose que la réponse est toujours « non possible », mais c’est l’un des facteurs limitants pour nos utilisateurs et une contrainte majeure car nous avons plus de 750 modules, chacun avec un espace de discussion dédié. Si je pouvais intégrer le sujet Discourse pour chaque module Kajabi sur la même page, même sans pouvoir commenter sur la page, cela simplifierait tout et permettrait un lien facile vers le sujet pertinent dans Discourse. Alors, y a-t-il eu des progrès à ce sujet ou cela restera-t-il toujours une limitation des forums privés ?
Je vois qu’il n’est pas possible d’intégrer des commentaires d’un forum privé (sur un site utilisant un domaine distinct) :
Cependant, ce qu’un collègue utilise pour les commentaires sur un site Ghost est un forum public (sur un domaine complètement différent), publiant principalement des articles gratuits. Il a récemment publié son premier article réservé aux membres, et comme j’ai basculé son sujet associé sur Discourse vers une catégorie où il n’est pas visible par « Tout le monde » mais plutôt par un groupe particulier (associé aux membres payants sur le site Ghost), l’intégration affiche maintenant le message « Erreur d’intégration ».
Bien que l’OP ait dit que les forums privés (sur des domaines distincts) ne permettront pas l’intégration, il s’agit d’un forum public mais avec une catégorie privée. Le problème que je rencontre est-il dû au fait qu’une catégorie privée sur un forum public est fonctionnellement identique à un forum privé ? J’ai lu le commentaire suivant, qui semble appuyer cette affirmation :
Si tel est le cas, les sujets des catégories privées sur les forums publics ne peuvent pas être intégrés tels quels, existe-t-il un moyen d’y parvenir avec un ajustement de l’intégration (et/ou de la plateforme) ? Je ne suis pas pressé de « corriger » (espérons-le) ce problème car je suis plutôt d’accord avec l’idée de définir temporairement la catégorie privée comme publique (comme Discourse ne peut pas récupérer l’article Ghost privé et donc afficher par inadvertance son contenu aux non-payants sur Discourse), mais si cela est possible, je n’hésiterais pas à engager quelqu’un plus tard pour modifier l’intégration et/ou soumettre une PR pour la plateforme.
Salut, j’utilise la fonctionnalité d’intégration avec mon blog Ghost, cependant je rencontre quelques problèmes quant à l’affichage des articles de blog sur mon forum. J’ai configuré les hôtes ci-dessous :
En raison de difficultés avec la configuration du sous-domaine (j’ai mon domaine chez un fournisseur différent de celui de mon forum Discourse), j’ai décidé d’utiliser la voie des balises.
Le problème que je rencontre est que tous mes articles de blog se retrouvent dans la catégorie Blog sur mon forum Discourse. J’utilise un utilisateur administrateur pour l’auteur des publications sur Discourse, et les 3 catégories autorisent les administrateurs à créer de nouveaux sujets.
Avez-vous une idée de ce qui pourrait causer cela ?
Peut-être spécifier les chemins pour chacun ? Par exemple, si les articles censés aller dans la catégorie blog sont sous le /blog/ , je crois que vous pouvez faire /blog/*.
Cela ne fonctionne pas avec le blog Ghost (du moins pas avec une installation assez standard). J’utilise mon domaine principal (alphagamer.net), le blog Ghost ajoute automatiquement le chemin en fonction du titre de l’article après le domaine. J’ai essayé d’ajouter un chemin mais il le supprime simplement.
Je me demandais si les commentaires de Discourse (sujet) pouvaient être intégrés dans un sujet Discourse ? Peut-être avec un Iframe qui inclut le bouton de réponse mais pas le reste du site. C’est-à-dire sans en-tête ni pied de page.
Je l’ai utilisé avec Ghost sans problème, à l’exception du manque d’intégration SSO, ce qui contrarie les utilisateurs.
Je me souviens avoir eu besoin de modifier un peu le code d’exemple.
Je pense que cela fonctionne bien si vous avez 1 intégration. Je pense que si vous essayez d’intégrer différents types d’articles de blog dans différentes catégories Discourse, cela nécessitera un peu plus de réglages.
Je pensais pouvoir y parvenir en utilisant les Tags, mais les Tags seuls ne semblent pas suffire (pour ma configuration). Je pense que sur Ghost, je devrai créer des Collections de contenu qui me permettent essentiellement d’ajouter une structure de dossiers (comme alphagamer.net/blog/ et les autres dont j’ai besoin). J’essaierai cela ce week-end, mettrai à jour ma « liste d’autorisation de chemins » et posterai ici si j’arrive à faire fonctionner cela.
La liste d’autorisation peut-elle être séparée par des virgules comme ceci ?
/blog/.*,/articles/.*
Edit : il semble que cela ne fonctionne pas. Ceci non plus :
/(blog|articles)/.*
Peut-être qu’ils doivent être deux hôtes distincts ?