Обратите внимание, что этот проект в настоящее время не отстранен, он был заменен приложением на базе Golang, которое имеет полную особенность:
Chronicle - это инструмент, который преобразует каталог простых текстовых файлов в статический HTML -блог (или блог, если вы предпочитаете).
Этот репозиторий содержит переписывание со сценой компилятора Staticle Staticle, которое представляет собой значительное обновление с точки зрения как скорости, так и гибкости.
Система намеренно проста, но она поддерживает:
Эта реализация значительно быстрее в генерации страниц, чем предыдущие выпуски, в первую очередь потому, что сообщения проанализированы и вставляются в базу данных SQLite, а не в том, чтобы каждый пост читал в ОЗУ.
После того, как сообщения в блоге были заполнены в базе данных SQLite, они вставлены в серию шаблонов, что в конечном итоге генерирует вывод.
Хотя мы предполагаем, что вы сохраняете базу данных SQLite вокруг, не имеет значения, если вы удалите ее. Акт пробора всех ваших записей по -прежнему очень быстрый процесс.
Клонировать репозиторий, затем установите, как и любой модуль CPAN:
perl Makefile.PL
make test
su - make install
Формат блога очень прост, а следующий файл - образец:
title: The title of my post
date: 12 August 2007
tags: foo, bar, baz
The text of the actual entry goes here.
However much there is of it.
Запись префиксируется небольшим заголовком, состоящим из нескольких псевдо-заголовок. Заголовок должен быть отделен от тела по крайней мере одной пустой линией.
Значения заголовков, которые неизвестны, игнорируются, и никакая часть заголовка не включена в вывод, который генерируется.
Распознаются следующие значения заголовка:
Могут быть вставлены дополнительные заголовки, которые будут проигнорированы по умолчанию, для доступа определенными плагинами. Например, плагин Chronicle::Plugin::SkipDrafts гарантирует, что записи в блоге игнорируются, если они все еще являются проектами - и включают draft:1 заголовок. Точно так же существует плагин под названием PostSpooler , который будет игнорировать сообщения до их должных данных, и который использует специальный заголовок publish , а не date по умолчанию.
Предполагая, что у вас есть каталог, содержащий ряд сообщений в блоге, вы сможете генерировать свой блог таким образом:
chronicle --input=path/to/input --output=/path/to/output
--theme=blog.steve.org.uk
Это будет считывать path/to/input/*.txt и генерирует блог под каталогом /path/to/output/ создание этого каталога, если отсутствует.
База данных SQLite будет создана по ./blog.db по умолчанию.
Предыдущий пример показал основное использование, одно очевидное изменение, которое предпочитает большинство пользователей, было бы установить название блога и подзаголовок:
chronicle --title="Steve Kemp's Blog" --sub-title="Writings about cake" ..
Если вы начнете установить несколько значений, вы предпочитаете использовать вместо этого файл конфигурации. Chronicle будет читать /etc/chronicle/config и ~/.chronicle/config до начала. Смущая это, вы можете указать собственный файл конфигурации Via --config=/path/to/conf .
Файл конфигурации точно соответствует аргументам командной строки, поэтому с учетом «--foo = bar» файл конфигурации позволит установить одно и то же через:
foo = bar
Как мы ранее отмечали, генерация блога в основном происходит через серию плагинов. Например, боковая панель может показать список всех тегов, которые могут быстро стать громоздкими. Если вы хотите отключить, что вы можете сделать это через:
chronicle --exclude-plugins=AllTags,RecentPosts --force ..
ПРИМЕЧАНИЕ . Плагины, которые генерируют выходные страницы, расположены под
Chronicle::Plugin::Generateпространства имен. Плагины, которые генерируют фрагменты, доступные для всех страниц, расположены подChronicle::Plugin::SnippetsSpace.
ПРИМЕЧАНИЕ . Поскольку фрагменты включены на каждую страницу, в темы по умолчанию мы добавили
--force, чтобы убедиться, что выходные страницы обновляются.
В идеале вы сможете мигрировать из предыдущих выпусков хроники непосредственно в эту кодовую базу, так как цель и основная операция идентичны:
data/ , если вы не указаете другой путь через " --input ".*.txt -это записи в блоге, если вы не указали " --pattern=*.blog ".Однако есть изменения, и они в значительной степени относятся к шаблонам, наряду с различиями в реализации.
Начиная с Chronicle 5 Основной сценарий анализирует любые аргументы командной строки и читает посты в блоге, но фактическое поколение вашего сайта полностью основано на плагинах. Плагины представляют собой стандартные модули Perl, расположенные под пространством имен Chronicle::Plugin , и хотя вам не нужно знать ни одну из деталей, которые они могут быть заказаны благодаря использованию Module :: Pluggable :: Заказано класс.
Изменения шаблона немного важнее, чем я хотел бы, но, к счастью, эти изменения в основном состоят из новых мест для вещей и дополнительных страниц.
Как уже упоминалось, код ядра довольно минимален, и все функциональность вывода выполняется плагинами.
Ядро будет называть следующие методы, если они присутствуют в плагинах:
on_db_createon_db_openon_inserton_initiateon_generateon_initiate , за исключением того, что прежние методы плагина гарантированно были вызваны до вызова on_generate .