Incorpore comentários do Discourse em outro site usando Javascript

Uma postagem foi dividida em um novo tópico: Incorporar Discourse usando external_id

Para um caso de uso de site de documentação (centenas/milhares de páginas), é possível não ter o Discourse gerando o tópico quando um usuário visita as páginas, mas sim quando ele deseja deixar um comentário, da maneira que o Giscus funciona?

Isso agora é “Allowlist”

Isso agora é “Username for topic creation”.

Além disso, existe alguma maneira de testar a integração de http://localhost? Recebo este erro no console devido à falta de https:

Refused to frame ‘https://forum.weaviate.io/’ because an ancestor violates the following Content Security Policy directive: “frame-ancestors ‘self’ https://localhost:3000”.

1 curtida

Olá! Obrigado por reportar. Atualizei algumas partes do guia, mas pode ser necessário revisá-lo em profundidade para garantir que esteja devidamente atualizado e funcionando.

Você pode precisar usar um serviço como ngrok.

2 curtidas

Editar: Acontece que usar url_escape na URL incorporada (já que uso Liquid para inserir automaticamente a URL correta) quebra a incorporação. Ops :upside_down_face:

Olá! Eu estava planejando usar um software de fórum para funcionar também como a seção de comentários do meu blog, então quando descobri que vocês não só têm uma maneira de fazer isso, mas que também está ativa no site de alguém, minha mente explodiu :exploding_head:

No entanto, ao tentar implementar este sistema no meu site, uma mensagem de erro é exibida no meu site, e isto apareceu nos logs de erro do meu fórum:

Mensagem de erro
Message (2 copies reported)

Addressable::URI::InvalidURIError (Cannot assemble URI string with ambiguous path: 'https://eleboog.com/posts/jekyll-to-gemini/')
lib/url_helper.rb:157:in `normalize_with_addressable'
lib/url_helper.rb:94:in `normalized_encode'
app/models/embeddable_host.rb:50:in `url_allowed?'
app/controllers/embed_controller.rb:84:in `comments'
app/controllers/application_controller.rb:418:in `block in with_resolved_locale'
app/controllers/application_controller.rb:418:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:74:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:369:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:228:in `call'

Backtrace

addressable (2.8.4) lib/addressable/uri.rb:2337:in `to_s'
addressable (2.8.4) lib/addressable/uri.rb:856:in `initialize'
addressable (2.8.4) lib/addressable/uri.rb:697:in `new'
addressable (2.8.4) lib/addressable/uri.rb:697:in `normalized_encode'
lib/url_helper.rb:157:in `normalize_with_addressable'
lib/url_helper.rb:94:in `normalized_encode'
app/models/embeddable_host.rb:50:in `url_allowed?'
app/controllers/embed_controller.rb:84:in `comments'
actionpack (7.0.4.3) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack (7.0.4.3) lib/abstract_controller/base.rb:215:in `process_action'

Env

HTTP HOSTS: forums.eleboog.com

Estou usando Jekyll para hospedar meu blog e hospedando meu fórum junto com ele usando hosts virtuais nginx. Tenho eleboog.com como um host permitido e /posts/.* como minha lista de permissão de caminhos. Alguma ideia do que pode estar causando este problema? Muito obrigado!

Fiquei em dúvida, mas depois de algumas alterações consegui. Estou trabalhando com meu blog Ghost e o Discourse.
Aqui está o que adicionei no arquivo post.hbs para todos os meus posts.

{{#post}}
                    <div>
                        <div>
                            {{> "comments"}}
                            {{!-- {{#has tag="25"}} --}}
                            <div id='discourse-comments'></div>
                            <meta name='discourse-username' content='eviltrout'>
                            <script type="text/javascript">
                                DiscourseEmbed = {

                                    discourseUrl: 'https://discourse-1-0.cloudclusters.net/',
                                    discourseEmbedUrl : 'https://www.mydomain.com{{ post.url }}',
                                    discourseReferrerPolicy: 'strict-origin-when-cross-origin'
                                    //topicId: '25'
                                };
                                (function () {
                                    console.log("DiscourseEmbed", DiscourseEmbed);
                                    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>
                            {{!-- {{/has}} --}}
                        </div>
                    </div>
                    {{/post}}

                </div>
            </section>

Código do arquivo Ghost post.hbs colado sob o comentário: Screenshot by Lightshot
E estas são as minhas configurações de incorporação: Screenshot by Lightshot

=====

Estou vendo o primeiro comentário listado (Screenshot by Lightshot).
Como posso remover isso?

Nenhum post é publicado no tópico do Discourse, apenas o link do post original: Screenshot by Lightshot

Alguém sabe como posso postar o conteúdo do meu blog neste tópico… Igual ao OP.

O que fazer quando continua mostrando “Carregando Discussão”?

Tente abrir o inspetor web do seu navegador na aba Console e veja se há algum erro. Se você postar os erros aqui, alguém poderá ajudar.

Tente também abrir o inspetor web do seu navegador na aba Elementos e procure por ‘discourse-comments’. Isso deve destacar um elemento na marcação. Diretamente abaixo do elemento <div id="discourse-comments">, deve haver uma tag script. Dê uma olhada no conteúdo dessa tag em busca de erros óbvios.

Talvez a primeira coisa a verificar seja garantir que o registro de Host que você configurou para o domínio no Discourse esteja publicando posts em uma categoria pública.

Se você estiver tentando publicar posts em uma categoria protegida ou em um site Discourse que exige login para visualizar conteúdo, você provavelmente terá erros.

2 curtidas

Obrigado Simon por ajudar.

O console começou vazio, mas depois de um tempo mostra este erro:

Editar:
Descobri, após muita solução de problemas, que precisava incluir “www.” em discourseEmbedUrl.

3 curtidas

Olá a todos! Algumas perguntas:

  1. Alguma ideia de por que a opção “Tópicos importados ficarão sem listagem até que haja uma resposta” pode continuar sendo ativada toda vez que clico em “Salvar configurações de incorporação”, mesmo depois de desmarcá-la?

  1. Ao visualizar uma postagem de blog no Chrome, estou vendo o seguinte onde os comentários incorporados do Discourse deveriam ser exibidos:

E no Safari, há apenas um bloco em branco/branco neste espaço, sem nenhuma mensagem.

Estou logado na instalação do Discourse em ambos os navegadores enquanto testo isso. O blog está em um domínio diferente da instalação do Discourse.

Obrigado antecipadamente!

Não sei por que isso estaria acontecendo. O que acontece se você for à página de configurações do seu site e alterar o valor da configuração do site embed unlisted?

Essa configuração e a configuração “Tópicos importados ficarão não listados…” devem espelhar uma à outra.

Desde que você não esteja incorporando os tópicos em uma categoria privada do Discourse, ter o blog em um domínio diferente do Discourse não deve causar problemas.

O erro que estou vendo nesta postagem do blog (Break Out Of Your Workout Rut With 8 AMRAP Fitness Challenges) é:

Refused to frame 'https://community.irla.co/' because an ancestor violates the following Content Security Policy directive: "frame-ancestors 'self' https://antsylabs.com https://antsylabs.com".

Você tem o domínio completo (incluindo o www) definido no registro Host do seu site Discourse? Parece que você pode ter adicionado apenas antsylabs.com a essa configuração.

2 curtidas

Este era o problema, obrigado!

Você está absolutamente certo. Eu omiti o ‘www’ deste registro, e adicioná-lo ao registro host faz com que os comentários incorporados sejam exibidos perfeitamente.

Muito obrigado pela sua ajuda! Eu realmente aprecio isso.

1 curtida

É possível exibir os comentários incorporados em ordem cronológica inversa (o mais recente primeiro, o mais antigo por último)?

Atualmente não é possível. Seria ótimo se os comentários incorporados exibissem algumas opções selecionáveis pelo usuário para filtrar comentários. Por exemplo, “todos”, “recentes”, “melhores”.

2 curtidas

É possível que o rastreador não consiga lidar com umlauts alemães, como Ä, Ö, Ü?
Títulos como “Ich würde” acabam em “Ich würde”.

Tenho algumas perguntas e agradeceria se alguém pudesse me ajudar.

Estou tentando incorporar comentários em um site NextJS com exportações estáticas, ou seja, quando o site estiver no ar, todas as páginas serão pré-geradas, então, embora eu tenha visto comentários em outros lugares de que o discourse não consegue rastrear SPA, meu entendimento é que ele deve ser capaz de lidar com meu site.

Vamos imaginar que meu fórum esteja em forum.domain.com e meu site onde quero incorporar comentários esteja em site.domain.com. Adicionamos todos os scripts relacionados a comentários e vemos um “Carregando discussão” eterno dentro de um iframe.

Se eu abrir pelo Safari, vejo o seguinte erro no console:

Unable to post message to https://forum.domain.com. Recipient has origin https://site.domain.com.

O que parece ser um problema de CORS, mas adicionei site.domain.com e www.site.domain.com às configurações de incorporação na minha instância do Discourse.

Por algum motivo, não vejo esse erro no console do Firefox, apenas vejo

E, finalmente, se eu for para https://forum.domain.coom/embed/comments?embed_url=https%3A%2F%2Fsite.domain.com%2Fpath%2Fto%2Fpage, também vejo a Discussão Carregando eternamente. O que me faz pensar que o problema está de alguma forma no lado do Discourse, e não no meu site. A menos que eu entenda mal como a incorporação funciona, então, se alguém tiver algum conselho, agradeceria muito.

O que é interessante, e talvez relacionado, é que adicionei a incorporação em dois tipos de páginas: site.domain.com/path/to/page e site.domain.com/longer/path/to/page, e não adicionei a tag de comentários à página inicial. Mas no meu discourse, vejo um tópico dedicado à página inicial de site.domain.com, que, por algum motivo, parece ser atualizado toda vez que um usuário visita um site

image

então agora tem uma quantidade insana de edições. Parte do texto incorporado contém um endereço de e-mail, que é renderizado no discourse como [email protected] e todas as edições são mostradas como se estivessem modificando essa parte

1 curtida

Olá!\n\nGostaria de saber sua opinião sobre este "bug": Embed: dates are not localized - #9 by weber-s sentido ter uma configuração para a localização da data? Porque no momento está em inglês, sem possibilidade de personalização.

Temos um cenário em que não fica bom quando as pessoas compartilham imagens/capturas de tela em suas postagens para postagens que são incorporadas em outra página.

Qual seria uma boa solução para ocultar imagens em postagens que são incorporadas em outro site?

1 curtida

Há uma aba CSS dedicada em temas para este recurso, então ocultar imagens dentro do corpo da postagem com CSS é a maneira mais rápida de conseguir isso.

1 curtida