Importação em massa de redirecionamentos para novos tópicos do Discourse

Olá a todos,

Recentemente, consegui migrar meu site de uma plataforma antiga e personalizada para o Discourse com sucesso. No entanto, agora estou enfrentando o desafio de importar permalinks/redirecionamentos para os novos tópicos do Discourse. Tenho os IDs de todas as postagens criadas no Discourse e estou explorando opções para importar esses redirecionamentos via API ou linha de comando, pois a importação manual devido à grande quantidade não é viável.

Alguém poderia, por favor, me informar se existem métodos ou ferramentas disponíveis para importar eficientemente links de redirecionamento para os novos tópicos do Discourse? Seus insights e sugestões seriam muito apreciados.

Obrigado antecipadamente!

Se sua migração foi baseada em um script de importação, então os tópicos (e provavelmente as postagens) incluem um campo personalizado import_id. Você pode então usar esses campos personalizados, Permalinks e SiteSetting.permalink_normalizations para criar redirecionamentos.

Você pode testar no rails com algo como

tcfs=TopicCustomField.where(name: 'import_id')
pcfs=PostCustomField.where(name: 'import_id')

Se você não tiver esses, então será Muito Difícil.

Se você tiver esses, então você pode fazer algo como

tcfs.each do |tcf|
  Permalink.create(url: "imported-topic/#{tcf.value}", topic_id: tcf.topic_id)
end

E então criar um PermalinkNormalization que redirecione o caminho para os tópicos para /imported-topic/IMPORTED_ID.

Você pode usar grep nos import_scripts para encontrar alguns outros scripts de importação que definem Permalinks e a normalização de permalinks.

1 curtida

Obrigado, Jay, pela sua resposta. Em vez de usar o script de importação para migração, optei pela integração de API devido à estrutura personalizada. Desenvolvi um script Python para importar postagens usando a API e consegui buscar novos IDs de tópico para cada tópico. Apesar de importar URLs antigas com novos IDs/URLs de tópico em aproximadamente 6 mil páginas, nenhum dos mapeamentos está funcionando como esperado. Você poderia me aconselhar sobre o que posso estar perdendo e como retificar esse problema? Sua orientação seria muito apreciada.