Lösung für die Verwendung von Markdown-Inhalten von Github?

7

Ich mag Markdown sehr und möchte Github verwenden, um den Inhalt dort zu speichern (auch mit dem zusätzlichen Vorteil, dass jeder eine PR einreichen kann).

Ich bin nicht an einem Markdown-Editor für Joomla interessiert, nur an einer Erweiterung, mit der Markdown-Dateien von Github abgerufen und in HTML umgewandelt werden können (zusätzlich, um sie für einen bestimmten Zeitraum zwischenzuspeichern).

Ähnlich wie bei JoomlaTools.

github => website

Valentin Despa
quelle
Wenn Sie dies vor mir herausfinden, teilen Sie es bitte mit, da ich es gerne tun würde. Es wäre auch sehr interessant, den Leistungsunterschied zwischen dem Abrufen von Inhalten von Github und#__content
Lodder
Eigentlich mache ich das schon hier vdespa.de/blog . Es funktioniert gut, aber wenn Github nicht funktioniert ...
Valentin Despa
Ich habe gerade darüber nachgedacht. Ich habe nur einen Markdown-Editor gesehen, aber sonst nichts. Persönlich würde ich vorschlagen, ein kleines Plugin mit einer Markdown to HTML-Bibliothek zu erstellen, das ausgelöst wird onContentPrepare. Ich bin mir nicht sicher, ob das das richtige Ereignis wäre, aber du bekommst das Wesentliche :)
Lodder
Ich wollte diese Woche einen Proof of Concept erstellen. Ich werde das Github-Projekt hier teilen, sobald es etwas zu sehen gibt. Ich habe so etwas wie onContentPrepareArbeiten, aber es muss jedes Mal eine Verbindung zu Github hergestellt werden. Ich habe eine andere Idee.
Valentin Despa

Antworten:

2

Soweit ich sehen kann, ist die einzige Möglichkeit, die Informationen in einem Repository wirklich abzurufen, manuell, es sei denn, Sie möchten die Commits und alles durchsehen und herausfinden, was wohin geht. In beiden Fällen ist es am besten, irgendwo eine Kopie des Repos zu haben (automatische Pull-Updates und all das, damit lokale Dateien im Rohformat vorliegen).

Der beste Weg ist also, einen Cronjob zu haben, der von Zeit zu Zeit versucht, Updates in ein bestimmtes Verzeichnis zu ziehen, und die Verzeichnisstruktur für Ihr Menü zu verwenden und die Dateien anzuzeigen. Um sie zu analysieren, verwenden Sie am besten Ihre eigene Bibliothek. Mit Joomla haben Sie jedoch die JGithub-Klasse, die so verwendet werden kann.

$github = new JGithub;

$result = $github->markdown->render('text here most likely the contents of a file');

echo $result; //will be html

Eine kleine Warnung, die die API zum Rendern verwendet, sodass Probleme beim Einlaufen der API-Grenzwerte auftreten können. Sie können auch oauth verwenden, um es zu umgehen, aber für einen so einfachen Bedarf ist es am besten, eine Bibliothek zu verwenden.

Wenn die Dateien im Rohformat lokal sind, ist es weitaus weniger ein Leistungsproblem, sie auch im laufenden Betrieb zu analysieren, sodass weniger Caching erforderlich ist, da alles, was wirklich passiert, darin besteht, dass Sie eine Datei trotzdem lesen, wenn dies erforderlich ist um es dann noch zwischenzuspeichern, denn zu diesem Zeitpunkt wäre es sowieso eine angepasste Erweiterung für Joomla, die Sie in Joomlas Caching einbinden könnten.

$cache = JCache::getInstance();
//data = rendered output, file is the path (dot separated is best) and extensionName is the custom extension
$cache->store($data,$file,$extensionName);

//then it can be called/checked like this
$cache->get($file,$extensionName);

Ich lasse nur JModelDinge automatisch für mich zwischenspeichern, daher ist mein Beispiel oben möglicherweise nicht ganz korrekt, aber es sollte nah genug sein, um irgendwohin zu gelangen.

Meine Beispiele hier sind sehr vage, nur ein paar Anmerkungen dazu, wie ich damit umgehen würde. Habe es einfach gehalten, da ich nicht 100% sicher bin, dass ich die Frage vollständig verstehe, obwohl dies zumindest jemandem helfen sollte :)

Jordan Ramstad
quelle
2

Aktueller Status: Proof of Concept, nicht öffentlich veröffentlicht.

Geschichte

Ich begann an meiner eigenen Lösung mit dem temporären Namen gitcms zu arbeiten . Hier ist die Architektur auf den Punkt gebracht:

Gitcms Architektur

So funktioniert es:

Github-Repository

Jedes Mal, wenn ein Commit auf das Repository übertragen wird, wird ein Ereignis ausgelöst. Es ist möglich, dieses Ereignis mit einem Webhook abzufangen, mit dem grundsätzlich einige Metadaten im JSON-Format zur weiteren Verarbeitung an eine Adresse gesendet werden können.

Gitcms

Als Middleware-Lösung implementiert, ist sie nicht CMS-spezifisch. Es empfängt das Push-Ereignis von Github, ermittelt, welche Dateien geändert wurden, ruft die Dateien von Github im Rohformat ab und konvertiert sie in HTML. Nach Abschluss der Konvertierung wird eine Nachricht an die registrierten Adapter gesendet.

Adapter

Dies ist CMS-spezifisch und kann die Nachricht von der Middleware interpretieren. Am Ende muss es Artikel erstellen, aktualisieren und löschen.

Noch offenen Fragen

  • Umgang mit Bildern oder anderen Mediendateien.
  • Anrufe werden synchron ausgeführt. Entkoppeln Sie sie mithilfe von Nachrichtenwarteschlangen.
Valentin Despa
quelle
1

Wenn ich es wäre, würde ich mit der für Sie geeigneten Methode abrufen (file_get_contents vielleicht, ich mag Curl, aber was auch immer) und dann die Parsedown-Klasse verwenden, um es in HTML umzuwandeln.

http://parsedown.org/

Joomla hat eine eigene Github-Klasse, aber ich habe nicht nachgesehen, was sie tatsächlich tut.

Michael
quelle