Logré transferir todo el contenido de bbPress al “entorno de desarrollo” de Discourse, utilizando el script bbpress.rb.
Pero tengo dos preguntas con las que me gustaría que me ayudaras:
1: Todas las imágenes aparecen en Discourse con esta ruta “/wp-content/uploads/img_644e48aedc2bf.jpg”, es la misma ruta de medios de bbPress, ¿cómo puedo importar también las imágenes para que se muevan a la ruta esperada en Discourse?
2: Mi permalink predeterminado de bbPress era así "www.demo.com/%postname%/", bbPress también usa permalinks "www.demo.com/?p=123"
en sql. Mi pregunta es, ¿cómo puedo editar el código de bbpress.rb para importar enlaces antiguos y redirigirlos a los nuevos enlaces de Discourse 301 sin problemas más adelante?
Así, cuando el usuario intente visitar el sitio antiguo www.demo.com/%postname%/
, el enlace se redirigirá 301 al nuevo "https://my-discoursexxxx.com/t/1234/%postname%"
Para el punto 1, necesitarás cambiar el script de bbpress para copiar los avatares de la carpeta y subirlos a tu instancia de Discourse. Puedes consultar el script de importación de vbulletin para tener una idea de cómo se podría lograr, en la línea 212.
En cuanto al punto 2, en realidad será un poco más complicado ya que Discourse no puede acceder a los datos de sitios web externos (como http://www.demo.com). Por lo tanto, la mejor manera de lograrlo sería mantener el mismo dominio y hacer algunos pequeños cambios en la función create_permalinks (línea 379) para admitir el parámetro postname.
Si te refieres a las publicaciones, entonces si tienes configurado descargar imágenes remotas a local, Discourse las descargará. Hay trabajos de Sidekiq que deberían ejecutarse para hacer eso.
Puedes buscar otros scripts para “Permalink”.
En resumen, los valores p=123 deberían almacenarse en TopicCustomFields o PostCustomFields con el nombre import_id y luego puedes ejecutar un script para crear los permalinks.
Hace unos minutos, activé “descargar imágenes remotas a local” y descargué todas las imágenes al servidor local “bbPress”. ¿Cómo puedo activar los trabajos de sidekiq para que Discourse las descargue durante la importación?
Disculpas por las molestias, ¿cómo puedo redirigir todos los enlaces de
Solo tienes que esperar a que terminen. Si prefieres modificar el script para que se encargue de las cargas cuando se ejecute, puedes buscar otros scripts que lo hagan.
Puedes buscar otros scripts que creen Permalinks. vbulletin.rb tiene un ejemplo de permalinks.
El bbpress.rb existente se encarga de los archivos adjuntos que están en la base de datos, así que debes tener usuarios que enlazaron directamente a ellos, ¿o algo así? Así que necesitarías encontrarlos con una expresión regular y luego manejarlos de la manera que lo hacen las otras funciones de carga. Si Discourse se está encargando de ellos, entonces es mejor dejar que lo haga, ya que sospecho que eso funcionará.
Pude guardar y transferir todas las imágenes de los antiguos artículos de bbPress a Discourse habilitando la función descargar imágenes remotas en el panel de control.
Pero todavía estoy atascado para redirigir 301 enlaces antiguos de bbPress como este
> https://www.demo.com/%postname%
al nuevo enlace
> www.NewDiscourse.com/t/id/%postname%/
Y no puedo resolver el problema a través de la expresión regular de htaccess porque no sé cuál es el nuevo id para el mismo tema.
No puedes. Hay al menos un script de importación que volcará datos para que puedas hacerlo. Como dije anteriormente, es posible crear redirecciones de Permalink para resolver el problema en Discourse.
Importar imágenes de bbPress a Discourse,
aquí tienes un script de ejemplo bbpress.rb.
copia las imágenes de avatar del directorio de bbPress y las carga en tu instancia de Discourse.
# bbpress.rb
# Importar avatares de bbPress y actualizar avatares de 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
# Llamar a la función
import_avatars
Ahora crea la función create_permalinks para generar las URL apropiadas y manejar las redirecciones 301.
# bbpress.rb
# Crear permalinks con el parámetro postname y manejar redirecciones
def create_permalinks
permalinks.each do |permalink|
topic_id = permalink['topic_id']
postname = extract_postname_from_permalink(permalink['url']) # Implementa esta función para extraer postname
topic_link = "https://my-discoursexxxx.com/t/#{topic_id}/#{postname}" # Modifica esta línea con la estructura de URL correcta
create_discourse_permalink(topic_id, permalink['url'], topic_link)
create_redirect(permalink['url'], topic_link) # Implementa esta función para crear una redirección 301
end
end
# Llamar a la función
create_permalinks
La función create_redirect debería añadir una redirección 301 desde el permalink antiguo de bbPress a la nueva URL de Discourse.
nota: Reemplaza la ruta según corresponda.
Eso no funcionará para las cargas. Discourse les da nombres nuevos a todos. No me había dado cuenta de que querían redirecciones de imágenes. Nunca he visto a nadie pedir eso.
Podría funcionar para algunos temas en los que Discourse y bbpress usan la misma ruta.