Um substituto brilhante para http://freenode.net.
Você precisará de nossas dependências do Node.js:
$ sudo npm install -g [email protected] svgo uglify-js
$ npm installEntão, assumindo uma instalação Python 3.4 (ou posterior):
$ python3 -m venv env
$ . env/bin/activate
$ pip install -r requirements.txt
$ cms7 Se tudo correr bem, você verá muita saída de log e out/ terá o site nele.
Como geramos o site estaticamente, você precisará executar novamente cms7 cada vez que mudar de algo. Se o seu editor gosta de comandos de compilação que podem ser executados a partir de qualquer diretório, você também poderá usar cms7 -c /path/to/config.yml .
Por favor, cumpra as diretrizes de contribuição
Dica útil para os PRs de fusão: você pode navegar na árvore que uma mesclagem resultaria em navegar para https://github.com/freenode/web-7.0/tree/pull/XYZ/merge , onde XYZ é o número da solicitação de tração.
Você também pode acessar https://freenode.net/web-7.0/BRANCHNAME/ para ver uma construção de qualquer ramificação em particular. Isso também funciona para solicitações de tração interna (eles são nomeados pull-X ).
O site é gerado a partir de fontes de marcação e modelos Jinja2, encontrados em content/ e templates/ respectivamente. A construção do Travis é implantada para as páginas do Github automaticamente em todos os esforços.
Vários módulos convertem as fontes em uma estrutura de saída útil. Eventualmente, o CMS7 documentará esse processo, mas por enquanto:
content/pages/ contém páginas simples que são renderizadas em out/ usando page.html .
content/news/ Contém posts de blog/notícias que são renderizados em out/news/ Usando article.html .
content/kb/ contém categorias KB: Cada content/kb/X/ possui as entradas para a categoria X Estes são renderizados em out/kb/answers/ com kb.html .
Os índices dessas entradas são renderizados em out/kb/ com kb_index.html , de acordo com uma lista em config/kb.yml .
O CMS7 usa a extensão dos metadados de Markdown e reconhece algumas chaves especiais:
title define o título da páginaslug substitui o URL alvo: pages/hello com slug: banana se tornaria out/banana.htmltemplate substitui o modelo para renderizar este arquivo de remarcaEspecífico do blog:
authordateenclosure define o url de podcast de um artigoTudo o que acaba na saída final tem um nome que o identifica no restante do site. Se um arquivo for derivado diretamente de um arquivo de entrada, geralmente seu nome é derivado do nome da entrada .
content/pages/hello.md são nomeados seu próprio nome em relação ao diretório de conteúdo, menos sua extensão: pages/hello .static/img/cat.jpg são nomeados seu próprio nome em relação à raiz do repositório: static/img/cat.jpg .kb/index/X , onde x é o nome do índice em config/kb.yml .O CMS7 pode gerar um URL relativo para qualquer coisa com um nome de qualquer página. Isso deve sempre ser preferido em relação aos links de escrita manualmente. Para gerar um link relativo a partir de um documento de marcação, basta link para um nome:
[ A page about frogs ] ( pages/frog ) Para fazer o mesmo a partir de um modelo, ligue url_for :
< a href = " {{ url_for('pages/frog') }} " >A page about frogs</ a >