플러그인에서 생성된 토픽의 첫 번째 게시글에 대해 일부 마크다운 기능을 제한하고 싶습니다.
클라이언트 측에서는 composer 모델의 topicFirstPost 속성에 접근하여 쉽게 구현할 수 있습니다. 하지만 서버 측의 lib/pretty_text.rb와 model/post.rb를 확인해 보니, cook 메서드에는 topic_id만 전달되고 있습니다. 토픽의 posts_count 속성을 확인하는 방식으로 처리할 수 있겠지만, rebaking 시에는 작동하지 않습니다.
아마도 markdown-it 프로세스에서 상태를 사용하지 않는 것이 좋을 것 같습니다.
또 다른 방법으로는 마크다운으로 플레이스홀더를 생성한 뒤, 서버 측에서 미리보기(manual update)를 업데이트하고 cook 후처리 이벤트를 청취하는 방식이 있습니다. 하지만 이 경우 추가 작업이 필요할 수 있습니다.
플러그인이 커스텀 BBCode 태그를 추가하거나, 장식 같은 후속 사용을 위해 텍스트를 커스텀 HTML 태그로 감싸는 상황을 상상해 보세요. 첫 번째 게시글(또는 다른 조건) 외에서는 이 효과가 발동되지 않기를 원합니다. 필요하지 않을 뿐 아니라, 부수적인 문제를 일으킬 수 있기 때문입니다.
또한, 서버 측에서 가능한 해결책을 찾았을 수 있습니다. Post 모델의 cook 메서드를 래핑하는 방식입니다. 아직 테스트는 하지 않았습니다.
class ::Post
# 기능 옵션을 추가하기 위해 원래의 cook 메서드를 래핑합니다
# lib/pretty_text.rb의 markdown 메서드를 참조하세요
alias_method :original_cook, :cook
def cook(raw, opts = {})
features = {
'feature-name': is_first_post?
}
if opts.has_key?(:features)
opts[:features].merge!(features)
else
opts[:features] = features
end
original_cook(raw, opts)
end
end