Incorporar comentários do Discourse em outro site via Javascript

Acredito que isso seja possível agora. A propriedade embed_url pode ser definida no momento da criação do tópico. Nosso plugin do WordPress faz isso aqui: wp-discourse/lib/discourse-publish.php at main · discourse/wp-discourse · GitHub. A propriedade embed_url não pode ser atualizada via API após a criação do tópico.

3 curtidas

Isso é fantástico! Parece que a documentação da API precisa ser atualizada então!

O que seria necessário para adicionar a propriedade ao método de atualização da API? Isso me permitiria resolver isso da maneira correta.

4 curtidas

Olá, tenho tido dificuldades em associar as postagens do meu blog às postagens do fórum usando este método. Parece que estou tendo problemas semelhantes a outros usuários aqui com a política de segurança de conteúdo do iframe. Meu blog é gerado pelo Jekyll e hospedado pelo GitHub, e meu Discourse é hospedado pela Digital Ocean. Seus endereços são blendertube.com e forum.blendertube.com, respectivamente.

Aqui está o erro relatado no meu navegador:

Recusou-se a enquadrar ‘forum.blendertube.com/’ porque um ancestral viola a seguinte diretiva de Política de Segurança de Conteúdo: “frame-ancestors ‘self’ blendertube.com”.

Isso tem algo a ver com SSL para minha instância do Discourse?

Aqui estão algumas capturas de tela:

Espero que vocês possam ajudar. Obrigado!

1 curtida

Aqui está outra captura de tela:

1 curtida

Alguém tem uma ideia de qual seria a sintaxe para substituir o “current_page.url” pela URL de uma página de produto do WordPress WooCommerce? Gostaríamos de fazer isso para não termos que personalizar o código para cada página e podermos aplicá-lo facilmente a todas as páginas.

Tentei substituir o valor do nosso próprio domínio para discourseEmbedUrl: 'http://eviltrout.com<%= current_page.url %>, mas isso não funcionou no WP.

1 curtida

Acho que o que podemos precisar aqui é a nova tag noindex, indexifembedded

Editar @codinghorror achou que esta era uma boa ideia quando surgiu para um caso de uso semelhante (o tópico incorporado)

2 curtidas

Não consigo descobrir se/como o seguinte é possível:

Quando o tema padrão da instância do discourse é Escuro, como o incorporado pode ser Claro?

Se meus navegadores não estiverem com problemas, parece que a implementação do @codinghorror é exatamente assim. Como isso é feito de forma elegante? :smiley:

2 curtidas

Observe se mais alguém tentar isso, o discourseEmbedUrl não funcionou para mim ao tentar incorporar Tópicos diretamente nas aulas correspondentes do Thinkific LMS, mas o método topicId funcionou.

1 curtida

Eu estava usando este recurso para incorporar comentários do Discourse em nosso blog. Inicialmente, funcionou perfeitamente. Recentemente, notei que blogs mais novos (\u003c1 yrs :rofl:) parecem ter algum problema onde o slug não é criado como no este caso, resultando em um link incorreto.

O método de geração de slug está definido como ascii, e o host permitido está definido 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 o óbvio, mas o problema que notei é que os tópicos criados pelo embed não têm nem o slug nem o título preenchidos. Ainda não tenho certeza por que estou encontrando esse problema.

1 curtida

Olá a todos, desculpem se esta é uma pergunta boba -

Pelo que estou vendo, a experiência incorporada permite apenas ler algumas postagens em um tópico, mas não interagir com ele dentro do site, certo? Ele te leva de volta para o discourse quando você tenta carregar mais comentários / responder ou clicar em um perfil

Existe uma versão da experiência incorporada que vive inteiramente em um site de terceiros (não no discourse)?

Quando meu site muda entre o modo escuro e o modo claro, como posso notificar a parte incorporada para mudar o modo de cor?

Configurei os Hosts Permitidos de Incorporação da seguinte forma


Mas ao tentar adicionar uma classe ao corpo do iframe, descobri que iframe.contentDocument é nulo e, se usar document.getElementById("discourse-embed-frame").contentWindow.document, o erro é o seguinte:
image

Como posso fornecer uma string específica no site que incorpora o iframe para o Discourse usar como título (ou pelo menos para o slug) para a thread criada? Tenho URLs de incorporação como example.com/12345 com conteúdo textual e as threads acabam usando palavras do conteúdo, enquanto eu gostaria de “12345”.

Não está lendo a tag <title> do documento?

Ah, isso faria sentido. Meus títulos são mais elaborados do que o “12345”, porém, e podem mudar com o tempo, enquanto o “12345” permaneceria estável. É por isso que eu gostaria de usar isso, em vez disso.

Eu testei um pouco: o scraper está de fato pegando o <title>text</title>. Definir para <title>12345</title> e substituí-lo para clientes humanos usando um <script>document.title = "fancy title";</script> no final do documento HTML funciona bem. A thread criada está usando “12345” como título e URL slug, enquanto os humanos veem um título legal na página onde a incorporação está acontecendo.

Obrigado pela dica!

2 curtidas

Olá a todos,

Gostaria de saber se é possível buscar posts de qualquer tópico por #tag?
Por exemplo, no site principal (que não é o Discourse) temos uma página definida pelo nome, vamos chamá-la de “Meu show” (/myshow)

Da mesma forma, em nossa instância do Discourse, temos muitos tópicos sobre “O Show”, eles têm a mesma hashtag #theshow e as pessoas podem navegar por eles conforme as temporadas ou eventos acontecem.

A ideia é ser capaz de buscar os posts mais recentes de todos os tópicos com a tag #theshow. É possível fazer isso?

O mais próximo que temos é buscar todos os tópicos ordenados por atividade sob uma tag específica, confira Embedding a list of Discourse Topics in another site.

2 curtidas

Como impedir que a primeira postagem seja incluída em comentários incorporados como no blog do Jeff?

EDIT: Eu estava usando arivanandan/discourse-embed-complete: Includes first post while embedding discourse :slightly_smiling_face:

E se eu quiser incorporar comentários de vários tópicos em uma única página? Como fazer isso?