외부용 Facebook Instant Article 생성기를 위해, 렌더링된 원박스(onebox)를 제외한 완성된 HTML 포스트가 필요합니다.
포스트에 대한 이러한 라우트나 API 엔드포인트가 이미 존재합니까?
외부용 Facebook Instant Article 생성기를 위해, 렌더링된 원박스(onebox)를 제외한 완성된 HTML 포스트가 필요합니다.
포스트에 대한 이러한 라우트나 API 엔드포인트가 이미 존재합니까?
아마 이 링크가 도움이 될 수 있습니다: GitHub - discourse/raw-post-button · GitHub
@adopilot님, 피드백 주셔서 감사합니다. 조금 더 자세히 설명해 주실 수 있을까요?
원본 게시글을 보기 위한 컴포넌트처럼 보입니다.
우리는 원본이 아닌 렌더링된 게시글을 표시하되, 원박스(Oneboxes)는 제외하고 싶은 것을 찾고 있습니다.
죄송합니다. 원본 게시물이 필요하다고 생각해서 올렸는데, 나중에 제가 틀렸다는 걸 깨달았습니다. 이미 게시되어 있었습니다.
혹시 대답해 주실 분 계신가요? 이게 어떤 식으로든 가능한가요?
안녕하세요, @Terrapop
요청한 User Agent 문자열이 FB 봇의 User Agent 문자열과 일치할 때 One Box의 DOM 요소를 숨기거나 제거하는 플러그인을 작성해 볼 수 있습니다.
도움이 되셨으면 좋겠습니다.
HTML을 후처리해야 합니다. 이미 조리된 게시물에는 원박스(Onebox)가 모두 확장된 상태의 HTML이 포함되어 있습니다.
그것이 바로 문제입니다. cooked 포스트에는 onebox가 포함되어 있는데, onebox에는 원래 미디어 링크가 더 이상 없고(raw 포스트에만 원래 링크가 있음) raw 포스트만 원래 링크를 가지고 있기 때문에, 이를 FB IA 유효 형식으로 변환할 수 없습니다.
Iframely는 독립 링크로부터 IA 유효한 IFRAME을 생성합니다. 우리는 raw 포스트를 사용하고 PHP 마크다운 파서(PHP용 Markdown-It)와 독립 링크용 Iframely를 함께 사용해 보았지만, Discourse의 마크다운 파싱은 훨씬 더 많은 작업을 수행하며, 우리는 Discourse가 마크다운에 적용하는 모든 마법을 재현하고 싶지 않습니다. 따라서 우리는 cooked 포스트를 가져오되, 파싱된 onebox는 제외하는(대신 Iframely를 통해 후처리하기를 원하기 때문) 경로를 찾고 있습니다.
현재 우리의 접근 방식은 단순한 포스트의 경우 작동합니다. 즉, raw를 기준으로 하여 PHP Markdown-It을 사용해 HTML로 변환하고, Iframely를 사용해 IA 유효한 미디어 카드(onebox는 해당되지 않음)를 생성한 다음, HTML을 Facebook IA HTML로 변환하여 FB PHP SDK를 통해 전송합니다. 그러나 Discourse는 마크다운 파싱에 많은 추가 규칙을 적용하기 때문에, onebox를 제외하고 파싱된 HTML을 Discourse에서 직접 가져올 수 있으면 좋겠습니다.
Discourse 외부에서 게시물을 따로 가공할 필요는 없습니다. 관련 메서드에 monkey patch를 적용하고, onebox가 생성되는 부분을 제외하면 됩니다. 대략적인 아이디어입니다.
음, 우리는 Discourse에서 전반적인 쿠킹(cooking) 동작을 변경할 의사가 없지만, 원박스(oneboxes) 없이 쿠킹된 게시물을 생성하는 엔드포인트(API)가 필요합니다. 대신 원래의 독립 링크는 그대로 유지해야 합니다(예: ahrefs).
DOM 요소를 숨기거나 제거하면 됩니다. 꽤 간단한 작업입니다.
이것은 개발자가 특정 DOM 요소를 표시하지 않거나(또는 제거하기를 원할 때) 수행하는 이러한 유형의 작업에 대한 “표준” 방식입니다.
**참고:
‘gon’ Ruby 제마를 사용하면 Ruby 변수를 JavaScript로 전달하는 것이 매우 쉬워지지만, 저는 이를 Rails 앱에서만 사용해 보았고 스택에 EmberJS를 함께 사용한 적은 없습니다(어쨌든 Ruby 변수를 JS로 전달하는 방법은 많습니다).)