ti-enxame.com

Solução para usar o conteúdo Markdown do github?

Eu gosto muito do Markdown e gostaria de usar o github para salvar o conteúdo lá (também com o benefício adicional de que qualquer pessoa possa enviar um PR).

Não estou interessado em um editor Markdown para o Joomla, apenas uma extensão que pode recuperar arquivos Markdown do github e transformá-los em HTML (além de armazená-los em cache por um período).

Semelhante ao que o JoomlaTools faz.

github => site

7
Valentin Despa

Status atual: prova de conceito, não divulgada publicamente.

História

Comecei a trabalhar em minha própria solução, com o nome temporário de gitcms . Aqui está a arquitetura em poucas palavras:

gitcms architecture

É assim que funciona:

repositório Github

Cada vez que uma confirmação é enviada por push ao repositório, o evento será acionado. É possível capturar esse evento usando um webhook que basicamente permite enviar alguns metadados no formato JSON para um endereço para processamento adicional.

gitcms

Implementado como uma solução de middleware, não é específico do CMS. Ele recebe o evento Push do github, descobre quais arquivos foram alterados, busca os arquivos do github no formato bruto e os converte em HTML. Após a conclusão da conversão, ela envia uma mensagem para os adaptadores registrados.

adaptador

Isso é específico para o CMS de compilação e pode interpretar a mensagem do middleware. No final, ele precisa criar, atualizar e excluir artigos.

Problemas pendentes

  • Como lidar com imagens ou outros arquivos de mídia.
  • As chamadas são sincronizadas, considere desacoplar usando filas de mensagens.
2
Valentin Despa

Até onde eu posso ver, a única maneira de realmente obter as informações em um repositório é manualmente, a menos que você queira examinar os commits e tudo, descobrindo o que vai aonde. Embora, seja como for, seria melhor ter uma cópia do repositório em algum lugar (atualizações de extração automática e tudo isso, para ter arquivos locais em formato bruto).

Portanto, a melhor maneira é ter um cronjob que tente puxar atualizações de vez em quando para um diretório especificado e usar a estrutura de diretórios do seu menu e exibir os arquivos. Analisá-los da melhor maneira é usar sua própria biblioteca, mas com o Joomla você tem a classe JGithub que pode ser usada assim.

$github = new JGithub;

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

echo $result; //will be html

Um pequeno aviso, no entanto, que usa a API para renderizá-la, para que você possa ter problemas em executar os limites da API. Você também pode usar oauth para ajudar a ignorá-lo, mas para uma necessidade tão simples é melhor usar uma biblioteca.

Ter os arquivos locais em formato bruto torna muito menos um problema de desempenho analisá-los rapidamente, portanto, menos necessidade de armazenamento em cache, pois tudo o que realmente está acontecendo é que você está lendo um arquivo de qualquer maneira, se houver necessidade para armazená-lo em cache ainda assim, porque neste momento seria uma extensão personalizada para o joomla de qualquer maneira que você possa vincular ao cache do 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);

Eu apenas deixei JModel armazenar em cache automaticamente as coisas para mim, então meu exemplo acima pode não estar totalmente correto, mas deve estar perto o suficiente para chegar a algum lugar com isso.

Meus exemplos aqui são muito vagos, apenas algumas notas sobre como eu lidaria com isso. Mantido simples, pois não tenho 100% de certeza de que entendi totalmente a pergunta, embora isso deva ao menos ajudar alguém :)

2
Jordan Ramstad

Se fosse eu, eu recuperaria usando o método que mais lhe convier (file_get_contents talvez, eu gosto de curl, mas tanto faz) e depois usaria a classe Parsedown para transformá-lo em HTML.

http://parsedown.org/

O Joomla tem sua própria classe no github, mas eu não olhei para ver o que ele realmente faz.

1
Michael