Correggere i permalink in modo che puntino all'URL dell'argomento e non al primo post dell'argomento

Dopo una migrazione personalizzata, molti permalink puntavano al primo post di un argomento invece che all’URL dell’argomento stesso.

ad esempio, permalink che puntano a
https://forum.example.com/t/example-topic/123/1

invece di
https://forum.example.com/t/example-topic/123


Verifica

Un forum Discourse è interessato se ci sono record per questa query SQL:

SELECT permalinks.*,
       posts.id,
       posts.topic_id,
       posts.post_number
FROM permalinks
         LEFT JOIN posts
                   ON posts.id = permalinks.post_id
WHERE permalinks.post_id IS NOT NULL
  AND posts.post_number = 1
LIMIT 20;

Correzione Rapida

Questo modifica i permalink in modo che puntino direttamente all’argomento, se originariamente puntavano al primo post nell’argomento.

UPDATE permalinks
SET topic_id = posts.topic_id,
    post_id  = NULL
FROM posts
WHERE permalinks.post_id = posts.id
  AND permalinks.post_id IS NOT NULL
  AND posts.post_number = 1;

Questa potrebbe essere una buona routine di pulizia da eseguire alla fine degli script di migrazione.

1 Mi Piace

Come hai creato i permalink?

Ad esempio, qui discourse/script/import_scripts/vanilla_mysql.rb at main · discourse/discourse · GitHub controllano specificamente il numero del post, se è 1, allora il post non viene passato (lasciato come NULL) e quindi il permalink non dovrebbe puntare al primo post.

2 Mi Piace

Ho adottato un approccio basato su SQL per i permalink basato su codice simile a

… ma con l’assenza di AND post_number <> 1 – quindi quello era il colpevole.

1 Mi Piace

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.