Gibt es eine Möglichkeit, einen gekochten Beitrag zu erhalten, aber ohne gerenderte Oneboxen?

Für einen externen Facebook Instant Article-Generator benötigen wir die gerenderten HTML-Beiträge, jedoch ohne gerenderte Oneboxes…

Existiert bereits eine solche Route oder API-Endpunkt für Beiträge?

Vielleicht kann das helfen GitHub - discourse/raw-post-button · GitHub

Hallo @adopilot, vielen Dank für dein Feedback. Könntest du das bitte etwas genauer erläutern?

Es sieht nach einer Komponente aus, um den Roh-Beitrag anzuzeigen.

Wir suchen nach etwas, das einen aufbereiteten Beitrag rendert, jedoch ohne Oneboxes.

Entschuldigung, ich dachte, du bräuchtest den Rohpost. Später habe ich gemerkt, dass ich falsch lag und es bereits gepostet wurde.

Jemand? Kann das irgendwie erreicht werden?

Hey @Terrapop,

Du könntest ein Plugin schreiben, das das DOM-Element für die One Box ausblendet (oder entfernt), wenn die angeforderte User-Agent-Zeichenkette mit der User-Agent-Zeichenkette des FB-Bots übereinstimmt.

Hoffe, das hilft.

Sie müssen das HTML nachbearbeiten, da die aufbereiteten Beiträge bereits den gesamten HTML-Code für expandierte Oneboxen enthalten.

Das ist genau das Problem. Da die verarbeiteten Beiträge die Oneboxes enthalten (die nicht mehr die originalen Medienlinks haben – nur die Rohdaten enthalten die originalen Links), können wir sie nicht in ein für Facebook Instant Articles (IA) gültiges Format umwandeln.

Iframely erstellt aus einzelnen Links IA-gültige IFRAMES. Wir haben versucht, die Rohdaten zu verwenden und einen PHP-Markdown-Parser (Markdown-It für PHP) zusammen mit Iframely für die einzelnen Links einzusetzen. Allerdings führt die Markdown-Parsing-Logik von Discourse viel mehr durch, und wir möchten nicht die gesamte Magie nachbilden, die Discourse auf Markdown anwendet. Daher suchen wir nach einem Weg, verarbeitete Beiträge zu erhalten, jedoch ohne die bereits geparsten Oneboxes (da wir diese stattdessen über Iframely nachverarbeiten möchten).

Unser aktueller Ansatz funktioniert für einfache Beiträge: Wir nehmen die Rohdaten als Basis, verwenden PHP Markdown-It, um sie in HTML zu konvertieren, und nutzen Iframely, um IA-gültige Medienkarten zu erstellen (Oneboxes sind dies nicht). Anschließend wird das HTML in Facebook IA HTML umgewandelt und über das Facebook PHP SDK übermittelt. Da Discourse jedoch viele zusätzliche Regeln beim Markdown-Parsing anwendet, wäre es großartig, den geparsten HTML-Code direkt von Discourse zu erhalten – jedoch eben ohne die Oneboxes.

Sie müssen Ihren Beitrag nicht außerhalb von Discourse bearbeiten. Patchen Sie einfach die verantwortliche Methode und schließen Sie den Teil aus, in dem Oneboxes generiert werden. Das ist die Grundidee.

Nun, wir möchten das allgemeine Kochverhalten in Discourse nicht ändern, benötigen jedoch einen Endpunkt (API), der einen gekochten Beitrag ohne Oneboxes erzeugt (aber die ursprünglichen eigenständigen Links beispielsweise als ahrefs beibehält).

Verstecken oder entfernen Sie einfach das DOM-Element. Das ist eine ziemlich einfache Aufgabe.

  1. Vergleichen Sie die User-Agent-Zeichenkette mit Ruby und setzen Sie bei Übereinstimmung einen Boolean-Wert auf true.
  2. Verwenden Sie JavaScript, um das DOM-Element zu verstecken, wenn der Boolean-Wert true ist.

Dies ist im Wesentlichen die „Standardmethode