githubからMarkdownコンテンツを使用するためのソリューション?


7

私はMarkdownが大好きで、そこにコンテンツを保存するためにgithubを使用したいと思っています(また、だれでもPRを送信できるという追加の利点があります)。

私はJoomlaのMarkdownエディターには興味がありません。githubからMarkdownファイルを取得し、それらをHTMLに変換できる拡張機能です(さらに、一定期間キャッシュするため)。

JoomlaToolsと同じです。

github => ウェブサイト


私の前でこれを見つけたら、共有してください。私も同じようにしたいと思っています。また、取得githubのからのコンテンツとの間の性能差を発見することは非常に興味深いものになるだろう#__content
Lodder

実際、私はすでにこれをここvdespa.de/blogで行っています。うまく動作しますが、githubがダウンしている場合...
Valentin Despa 14

ちょうどこれについて実際に考えていました。私はMarkdownエディターだけを見たことがあります。個人的には、Markdown to HTMLライブラリを使用して小さなプラグインを作成し、トリガーされることをお勧めしますonContentPrepare。それが正しいイベントかどうかは
わかり

今週はコンセプトの証明を作成したいと思いました。見たいことがあり次第、ここでgithubプロジェクトを共有します。onContentPrepare仕事のようなものがありますが、毎回githubに接続する必要があります。別のアイデアがあります。
Valentin Despa 2014年

回答:


2

私が確認できる限り、実際にリポジトリ内の情報を取得する唯一の方法は手動です。ただし、コミットなどすべてを調べて、何がどこにあるのかを理解したくない場合を除きます。どちらの方法でも、リポジトリのコピーをどこかに置くのが最善です(自動プル更新などすべてのローカルファイルがraw形式である)。

したがって、最善の方法は、指定したディレクトリに更新を時々プルし、メニューのディレクトリ構造を使用してファイルを表示するcronjobを用意することです。それらを解析するための最良の方法は、独自のライブラリーを使用することですが、Joomlaでは、そのように使用できるJGithubクラスがあります。

$github = new JGithub;

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

echo $result; //will be html

ただし、APIを使用してレンダリングするため、API制限に達してしまうという問題が発生する可能性があります。また、oauthを使用してバイパスを支援することもできますが、そのような単純なニーズでは、ライブラリを使用するのが最善です。

ファイルをロー形式でローカルにしておくと、ファイルをその場で解析するだけでパフォーマンスの問題が大幅に軽減されます。必要な場合は、とにかくファイルを読み取っているだけなので、キャッシュの必要性が少なくなります。この時点でそれはjoomlaのカスタマイズされた拡張であるため、Joomlaのキャッシングに結び付けることができます。

$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);

私はmoslyでJModel自動的にキャッシュするので、上の例は完全に正しいわけではないかもしれませんが、どこかに移動できるほど十分に近いはずです。

ここでの私の例は非常に曖昧ですが、これをどのように処理するかについてのちょっとしたメモです。これは少なくとも誰かを助けるはずですが、私が質問を完全に理解していることを100%確信していないので、それは単純にしてください:)


2

現在のステータス:概念実証、公開されていない。

歴史

私は一時的な名前gitcmsを使用して、独自のソリューションの作成を開始しました。これは一言で言えばアーキテクチャです:

gitcmsアーキテクチャ

これがどのように機能するかです:

Githubリポジトリ

コミットがリポジトリにプッシュされるたびに、イベントがトリガーされます。基本的にJSON形式のメタデータをアドレスに送信してさらに処理できるようにするWebhookを使用して、このイベントをキャッチすることができます。

gitcms

ミドルウェアソリューションとして実装され、CMS固有ではありません。githubからpushイベントを受け取り、変更されたファイルを特定し、githubからraw形式でファイルをフェッチして、HTMLに変換します。変換が完了すると、登録されているアダプタにメッセージが送信されます。

アダプタ

これはビルドCMS固有であり、ミドルウェアからのメッセージを解釈できます。最終的には、記事を作成、更新、削除する必要があります。

保留中の案件

  • 画像またはその他のメディアファイルを処理する方法。
  • 呼び出しは同期的に行われます。メッセージキューを使用して分離することを検討してください。

1

それが私なら、あなたに合った方法(file_get_contents多分、curlが好きですが、何でも)を使用して取得し、次にParsedownクラスを使用してHTMLに変換します。

http://parsedown.org/

Joomlaには独自のgithubクラスがありますが、実際にそれが何をするのか見ていません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.