bbpress.rb 스크립트를 사용하여 bbPress의 모든 콘텐츠를 Discourse "개발 환경"으로 이전하는 데 성공했습니다.
하지만 도움을 요청드리고 싶은 질문이 두 가지 있습니다:
1: 모든 이미지가 Discourse에서 “/wp-content/uploads/img_644e48aedc2bf.jpg” 경로로 표시됩니다. 이는 bbPress 미디어 URL 경로와 동일한데, 이미지도 함께 가져와서 Discourse에서 예상되는 경로로 이동시킬 수 있는 방법이 있을까요?
2: 제 bbPress 기본 영구 링크(permalink)는 "www.demo.com/%postname%/" 형식이었으며, bbPress는 SQL에서도 "www.demo.com/?p=123" 형태의 영구 링크를 사용합니다. bbpress.rb 코드를 어떻게 수정해야 하는지 궁금합니다. 이전 링크를 가져와서 나중에 문제가 없이 새로운 Discourse 링크로 301 리다이렉트할 수 있도록 하는 방법을 알려주세요.
1번의 경우, bbpress 스크립트를 수정하여 폴더에서 아바타를 복사하고 Discourse 인스턴스에 업로드해야 합니다. 이를 어떻게 달성할 수 있는지에 대한 아이디어는 vbulletin 가져오기 스크립트의 212번 줄을 참고하시면 됩니다.
2번의 경우, Discourse가 외부 웹사이트의 데이터(예: http://www.demo.com)에 액세스할 수 없기 때문에 실제로는 좀 더 복잡합니다. 따라서 이를 달성하는 가장 좋은 방법은 동일한 도메인을 유지하고, postname 파라미터를 지원하도록 create_permalinks 함수(379번 줄)를 약간 수정하는 것입니다.
작업이 완료될 때까지 기다리면 됩니다. 스크립트가 실행될 때 업로드를 처리하도록 수정하고 싶다면, 그렇게 하는 다른 스크립트들을 참고할 수 있습니다.
Permalinks를 생성하는 다른 스크립트들을 참고해 보세요. vbulletin.rb에는 permalinks에 대한 예제가 있습니다.
기존의 bbpress.rb는 데이터베이스에 있는 첨부 파일을 처리하므로, 직접 해당 파일로 링크를 걸었던 사용자가 있거나 그런 상황이 있는 것이죠? 그렇다면 정규 표현식(regex)으로 그것들을 찾아내고, 다른 업로드 함수들이 처리하는 방식으로 처리해야 합니다. Discourse가 이미 이를 처리하고 있다면, 제 생각에는 그렇게 하는 것이 잘 작동할 것이므로 그냥 Discourse에 맡기는 것이 더 나을 수 있습니다.
bbPress에서 Discourse로 이미지를 가져오는 방법입니다.
아래는 예시 bbpress.rb 스크립트입니다.
이 스크립트는 bbPress 디렉터리에서 아바타 이미지를 복사하여 Discourse 인스턴스에 업로드합니다.
# bbpress.rb
# bbPress 아바타 가져오기 및 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
# 함수 호출
import_avatars
이제 create_permalinks 함수를 만들어 적절한 URL을 생성하고 301 리다이렉트를 처리하세요.
# bbpress.rb
# postname 매개변수를 가진 영구 링크 생성 및 리다이렉트 처리
def create_permalinks
permalinks.each do |permalink|
topic_id = permalink['topic_id']
postname = extract_postname_from_permalink(permalink['url']) # postname을 추출하는 함수 구현
topic_link = "https://my-discoursexxxx.com/t/#{topic_id}/#{postname}" # 올바른 URL 구조로 이 줄 수정
create_discourse_permalink(topic_id, permalink['url'], topic_link)
create_redirect(permalink['url'], topic_link) # 301 리다이렉트를 생성하는 함수 구현
end
end
# 함수 호출
create_permalinks
create_redirect 함수는 이전 bbPress 영구 링크에서 새로운 Discourse URL로 301 리다이렉트를 추가해야 합니다.
참고: 경로를 본인 환경에 맞게 교체하세요.