1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/caixw-typing

Клонировать/Скачать
README.md 19 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 07.03.2025 09:11 7f31772

gitype Статус сборки Версия Go Отчет Go Report Card Лицензия

Блоговая система, основанная на Git, с такими особенностями:

  1. Отсутствие баз данных, управление публикациями через Git;
  2. Отсутствие категорий, группировка по меткам;
  3. Нет разделения между страницами и обычными статьями;
  4. Возможность реального времени поиска контента;
  5. Автоматическое создание RSS, Atom, Sitemap и OpenSearch;
  6. Поддержка пользовательских тем.

Демонстрационный адрес: https://caixw.io

Установка

  1. Клонировать код: go get github.com/caixw/gitype;
  2. Выполнить scripts/build.sh, чтобы скомпилировать код (можно также использовать go build);
  3. Выполнить gitype -init=/to/path, чтобы выгрузить начальные данные;
  4. Запустить 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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/caixw-typing.git
git@api.gitlife.ru:oschina-mirror/caixw-typing.git
oschina-mirror
caixw-typing
caixw-typing
master