Sono riuscito a trasferire tutti i contenuti di bbPress nell’ambiente di sviluppo di Discourse utilizzando lo script bbpress.rb.
Ho però due domande per cui avrei bisogno di aiuto:
1: Tutte le immagini appaiono su Discourse con questo percorso “/wp-content/uploads/img_644e48aedc2bf.jpg”, che è lo stesso percorso degli URL multimediali di bbPress. Come posso importare anche le immagini in modo che vengano spostate nel percorso previsto su Discourse?
2: I permalink predefiniti del mio bbPress erano simili a "www.demo.com/%postname%/", bbPress utilizza anche permalink come "www.demo.com/?p=123" in sql. La mia domanda è come posso modificare il codice di bbpress.rb in modo da poter importare i vecchi link e reindirizzare ai nuovi link di Discourse con reindirizzamento 301 senza problemi in seguito?
Quindi, quando un utente tenta di visitare il vecchio sito www.demo.com/%postname%/, il link viene reindirizzato 301 al nuovo https://my-discoursexxxx.com/t/1234/%postname%.
Per il punto 1, dovrai modificare lo script bbpress per copiare gli avatar dalla cartella e caricarli nella tua istanza Discourse. Puoi controllare lo script di importazione vbulletin per farti un’idea di come ciò potrebbe essere realizzato, alla riga 212.
Per quanto riguarda il punto 2, sarà in realtà un po’ più complicato poiché Discourse non può accedere ai dati di siti web esterni (come http://www.demo.com). Quindi, il modo migliore per raggiungere questo obiettivo sarebbe mantenere lo stesso dominio e apportare alcune piccole modifiche alla funzione create_permalinks (riga 379) per supportare il parametro postname.
Se intendi nei post, allora se hai impostato download remote images to local, Discourse le scaricherà. Ci sono processi sidekiq che dovrebbero essere eseguiti per farlo.
Puoi cercare altri script per “Permalink”.
In breve, i valori p=123 dovrebbero essere memorizzati in TopicCustomFields o PostCustomField con il nome import_id e puoi quindi eseguire uno script per creare i permalink.
Qualche minuto fa, ho attivato “scarica immagini remote in locale” e ho scaricato tutte le immagini sul server locale “bbPress”. Come posso attivare i processi sidekiq per farli scaricare a Discourse durante l’importazione?
Mi scuso per l’inconveniente, come posso reindirizzare tutti i link da
Devi solo aspettare che finiscano. Se preferisci modificare lo script in modo che gestisca i caricamenti quando viene eseguito, puoi consultare altri script che lo fanno.
Puoi consultare altri script che creano Permalinks. vbulletin.rb ha un esempio di permalinks.
L’attuale bbpress.rb gestisce gli allegati che si trovano nel database, quindi devi avere utenti che hanno collegato direttamente ad essi, o qualcosa del genere? Quindi dovresti trovarli con un’espressione regolare e poi gestirli nel modo in cui lo fanno le altre funzioni di caricamento. Se Discourse li sta gestendo, allora potresti piuttosto lasciarlo fare, dato che sospetto che funzionerà.
Sono riuscito a salvare e trasferire tutte le immagini dai vecchi articoli di bbPress a Discourse abilitando la funzione download remote images nel pannello di controllo
Ma sono ancora bloccato per reindirizzare i vecchi link di bbPress 301 come questo
> https://www.demo.com/%postname%
al nuovo link
> www.NewDiscourse.com/t/id/%postname%/
E non riesco a risolvere il problema tramite espressioni regolari htaccess perché non so quale sia il nuovo id per lo stesso argomento.
Non puoi. Esiste almeno uno script di importazione che estrarrà i dati in modo che tu possa farlo. Come ho detto in precedenza, è possibile creare reindirizzamenti Permalink per risolvere il problema in Discourse.
Importa immagini da bbPress a Discourse,
ecco uno script di esempio bbpress.rb.
copia le immagini avatar dalla directory bbPress e le carica nella tua istanza Discourse.
# bbpress.rb
# Importa avatar bbPress e aggiorna avatar Discourse
def import_avatars
users.each do |user|
bbpress_avatar_path = "/path/to/bbpress/avatars/#{user['avatar_filename']}"
next unless File.exist?(bbpress_avatar_path)
avatar_upload = File.open(bbpress_avatar_path)
DiscourseAvatar.create_for(user['email'], avatar_upload, override_gravatar: true)
end
end
# Chiama la funzione
import_avatars
Ora crea la funzione create_permalinks per generare gli URL appropriati e gestire i reindirizzamenti 301.
# bbpress.rb
# Crea permalink con parametro postname e gestisce i reindirizzamenti
def create_permalinks
permalinks.each do |permalink|
topic_id = permalink['topic_id']
postname = extract_postname_from_permalink(permalink['url']) # Implementa questa funzione per estrarre postname
topic_link = "https://my-discoursexxxx.com/t/#{topic_id}/#{postname}" # Modifica questa riga con la corretta struttura URL
create_discourse_permalink(topic_id, permalink['url'], topic_link)
create_redirect(permalink['url'], topic_link) # Implementa questa funzione per creare un reindirizzamento 301
end
end
# Chiama la funzione
create_permalinks
La funzione create_redirect dovrebbe aggiungere un reindirizzamento 301 dal vecchio permalink bbPress al nuovo URL Discourse.
nota: Sostituisci il percorso secondo le tue esigenze.
Questo non funzionerà per i caricamenti. Discourse assegna loro nomi nuovi. Non avevo notato che volessero reindirizzamenti delle immagini. Non ho mai visto nessuno richiederlo.
Potrebbe funzionare per alcuni argomenti in cui Discourse e bbpress utilizzano per caso lo stesso slug.