Блоговая система, основанная на Git, с такими особенностями:
Демонстрационный адрес: https://caixw.io
go get github.com/caixw/gitype
;scripts/build.sh
, чтобы скомпилировать код (можно также использовать go build
);gitype -init=/to/path
, чтобы выгрузить начальные данные;gitype -appdir=/to/path
.Файлы в каталоге /scripts содержат скрипты для запуска демона на различных платформах. Каталог /testdata представляет собой полный рабочий каталог, который можно скопировать вместо выполнения команды -init.
appdir
является постоянной.Каталог conf
содержит конфигурацию программы, включая пароль для обновления интерфейса, который не следует раскрывать;
каталог data
содержит фактический контент блога, включая статьи, метки, ссылки на сайты и настройки названий сайта,
все изменения и публикации контента отображаются здесь.```
|--- conf Конфигурационные файлы программы
| |
| |--- logs.xml Файл конфигурации логов
| |
| |--- app.yaml Файл конфигурации программы
|
|--- data Директория данных программы
|
|--- meta Настройки блога
| |
| |--- config.yaml Основные настройки, такие как название сайта
| |
| |--- tags.yaml Определение меток
| |
| |--- links.yaml Ссылки на сайты
|
|--- posts Директория со статьями
|
|--- raws Другие материалы доступные по URL
|
|--- themes Директория пользовательских тем
|
|--- default Тема по умолчанию
Файлы конфигурации уровня приложения находятся в директории conf и требуют перезапуска для применения изменений. Включают следующее:
- app.yaml — определяют базовые данные, такие как порт и сертификат;
- logs.xml — определяет формат вывода и путь хранения логов; подробные настройки можно найти в [документации logs](https://github.com/issue9/logs).
##### app.yaml
Параметр | Тип | Описание
--------------------|:----------|:---------
https | bool | Активировать HTTPS?
httpState | string | При значении https=true, указывает метод обработки порта 80 (отключить, перенаправить, использовать по умолчанию)
certFile | string | При значении https=true, обязательное поле для сертификата
keyFile | string | При значении https=true, обязательное поле для ключа
port | string | Указывает порт, если не указано, используется значение 80 или 443
headers | map | Дополнительные заголовки, которые могут быть изменены в других местах
webhook | Webhook | Настройки связанные с webhook###### Webhook
Параметр | Тип | Описание
-------------------|:------------------|:--------
url | string | URL для приема webhook
frequency | time.Duration | Минимальная частота обновления webhook
method | string | Метод приема запроса для URL (по умолчанию "POST")
repoURL | string | URL удаленного репозитория
#### Содержимое директории data
Все временные метки представлены в формате RFC3339: 2006-01-02T15:04:05Z07:00.
##### meta/config.yamlconfig.yaml содержит основные настройки сайта:
Название | Тип | Описание
:--------------------|:--------------|:---------
title | string | Название сайта
subtitle | string | Подзаголовок сайта
url | string | Адрес сайта
beian | string | Номер регистрации
uptime | string | Время запуска в формате строки времени согласно стандарту RFC 3339
pageSize | int | Количество элементов на странице
longDateFormat | string | Длинный формат даты, используемый Go
shortDateFormat | string | Короткий формат даты, используемый Go
theme | string | По умолчанию используется тема
type | string | MIME-тип всех HTML-страниц, по умолчанию "text/html"
icon | Icon | Изображение иконки сайта
menus | []Link | Содержимое меню, имеет тот же формат, что и links.yaml
author | Author | Информация о авторе статьи по умолчанию
license | Link | Информация о лицензии статьи по умолчанию
archive | Archive | Настройки архива
outdated | time.Duration | Если время больше этого значения, статья считается устаревшей и отображаются некоторые сообщения
rss | RSS | Настройки RSS, если они не нужны, значение можно не указывать
atom | RSS | Настройки Atom, если они не нужны, значение можно не указывать
sitemap | Sitemap | Настройки sitemap, если они не нужны, значение можно не указыватьopensearch | Opensearch | Настройки OpenSearch; если они не требуются, значения можно не указывать
pages | map[string]Page| Настройки различных типов страниц###### АвторИмя | Тип | Описание
:------------|:----------:|:---------
name | string | Имя
url | string | URL сайта
email | string | Электронная почта
avatar | string | Аватар
###### Архив
Имя | Тип | Описание
:------------|:----------:|:---------
order | string | Способ сортировки архива, может быть: `desc` (по умолчанию) и `month`
type | string | Классификация архива, может быть по годам: `year` (по умолчанию) или по месяцам: `month`
format | string | Формат заголовка
###### RSS
Имя | Тип | Описание
:------------|:---------:|:---------
title | string | Название
size | int | Число отображаемых записей
url | string | URL адрес
type | string | MIME тип текущего файла
###### Карта сайта
Имя | Тип | Описание
:-------------|:---------:|:---------
url | string | URL адрес карты сайта
xslURL | string | XSL для sitemap.xml, может быть пустым
enableTag | bool | Включает ли метки в карте сайта
priority | float | Вес страницы с метками
changefreq | string | Частота изменения страницы с метками
postPriority | float | Вес страницы с записями
postChangefreq| string | Частота изменения страницы с записями
type | string | MIME тип текущего файла, по умолчанию `application/atom+xml` или `application/rss+xml`
###### OpenSearchИмя | Тип | Описание
:----------|:---------:|:---------
url | string | URL-адрес opensearch
title | string | Значение свойства title в html>head>link
shortName | string | Значение shortName
description| string | Значение description
longName | string | Значение longName
image | Icon | Значение image
type | string | MIME-тип текущего файла, если не указан, используется значение по умолчанию из пакета vars###### Иконка
Имя | Тип | Описание
:--------|:---------:|:---------
type | string | MIME тип иконки
sizes | string | Размеры иконки
url | string | URL адрес иконки
###### Ссылка
Имя | Тип | Описание
:--------|:---------:|:---------
text | string | Текст ссылки, может быть не уникальным
url | string | URL адрес ссылки
title | string | Значение свойства title в a-теге, может быть пустым
icon | string | URL или имя иконки Font Awesome
rel | string | Значение свойства rel в a-теге
type | string | Тип содержимого, на которое указывает ссылка
###### Страница
Имя | Тип | Описание
:------------|:--------|:---------
title | string | Значение html>head>title страницы
keywords | string | Значение html>head>meta.keywords страницы
description | string | Значение html>head>meta.description страницы
**Некоторые части страниц могут использовать заполнитель `%content%`, который представляет собой название сайта и свободный контент, например, в теговых страницах, `%content%` заменяется названием тега**
**Для страниц с тегами и постами значения keywords и description являются неизменяемыми**
##### meta/links.yaml
Файл `links.yaml` используется для указания ссылок на внешние сайты и представляет собой массив. Каждый элемент этого массива является объектом типа `Link`.
Каждый элемент может использовать [XFN](https://gmpg.org/xfn/).
##### meta/tags.yaml
Файл `tags.yaml` используется для указания всех значений меток. Представлен как массив, каждый элемент которого содержит следующие поля:Имя | Тип | Описание
:---------|:--------|:---------
slug | string | Уникальное имя, используемое статьями при ссылках и адресах
title | string | Литеральное значение, которое может не быть уникальным
color | string | Цветовой код, используемый для отображения меток на странице со всеми метками
content | string | Подробное описание метки, может содержать **HTML**
series | bool | Отмечает, является ли эта метка частью серии
##### Публикации
Папка `data/posts` служит каталогом публикаций, её структура может быть организована по вашему усмотрению. Система определяет наличие публикации по наличию файлов `meta.yaml` и `content.html`. Например:
--- posts +--- about | | | +--- meta.yaml | | | +--- content.html | +--- 2016 | +--- 2017 | +--- post1 | | | +--- meta.yaml | | | +--- content.html | +--- post2 | +--- meta.yaml | +--- content.html
Где `/posts/about`, `/posts/ Yöntem 2017/post1` и `/posts/2017/post2` считаются публикациями.
###### meta.yamlФайл meta.yaml содержит детальную информацию о текущей публикации.
| Название | Тип | Описание |
| :------- | :-------- | :----------------------------------------------------------------------- |
| title | string | Заголовок |
| created | string | Время создания в соответствии со стандартом времени RFC 3339 |
| modified | string | Время последнего изменения в соответствии со стандартом времени RFC 3339|
| tags | string | Связанные метки, разделённые запятой; названия слагов берутся из файла meta/tags.yaml |
| summary | string | Краткое содержание, также используется как значение атрибута description в html>head>meta |
| content | string | Полное содержание |
| outdated | string | Информация о том, что статья устарела |
| state | string | Состояние, может принимать значения top, last, draft и default; по умолчанию default |
| author | Author | Автор; по умолчанию берётся из файла meta/config.yaml |
| license | Link | Лицензия; по умолчанию берётся из файла meta/config.yaml |
| template | string | Используемый шаблон; по умолчанию post |
| keywords | string | Содержимое метатега keywords в html>head>meta; если пустое, используются метки |
##### ТемыФайлы тем находятся в папке `data/themes`. Можно определить несколько тем, используя ключ `theme` в конфигурационном файле для указания текущей активной темы.
Синтаксис шаблонов тем основан на [html/template](https://golang.org/pkg/html/template/).
Для одной темы можно определить несколько шаблонов для отображения подробной информации о статьях. Каждый шаблон может быть указан в метаданных статьи через файл `meta.yaml`. По умолчанию используется шаблон `post`.
#### Шаблоны ошибок
Шаблоны ошибок с кодами 400 и выше могут быть настроены путём создания HTML-файлов с соответствующими названиями. Например, для ошибки 400 создаётся файл `400.html`. Однако эти файлы должны содержать только чистый HTML-код, без использования шаблонов.
##### Сырой контент
Если запрошенная страница не существует, система попробует найти её содержимое в папке `raws`. Например, запрос `/abc.html` приведёт к поиску файла `raws/abc.html`. Даже для стандартных маршрутов статей, таких как `/post/2016/about.htm`, если статья не найдена, будет выполнен поиск в папке `raws`.
### Авторское право
Проект использует лицензию [MIT](https://opensource.org/licenses/MIT). Полное описание лицензии доступно в файле [LICENSE](LICENSE).
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )