Официальное руководство по движку блогов NanoBlogger

Руководство пользователя NanoBlogger

Автор [n1xt3r][0] (Кевин Вуд)

Официальное руководство по движку блогов NanoBlogger.

Содержание

1.Введение
2.Характеристики
3.Требования
4.Начиная
5.Настройки и конфигурация
6.Управление записями и тегами (категориями)
7.Шаблоны78.Плагин статей и статей
9.О плагинах
10.Настройка плагинов
11.Написание плагинов
12.Издательский
13.Добавление поддержки комментариев
14.Импорт записей
15.Советы и приемы
16.Кредиты

1. Введение

NanoBlogger - это небольшой движок веб-журналов, написанный на Bash для командной строки. Он использует стандартные инструменты UNIX, такие как cat, grep и sed, для создания статического HTML-содержимого. Его можно использовать и изменять бесплатно под Стандартной общественной лицензией GNU.

Синопсис

2. Особенности

  • гибкий интерфейс командной строки
  • легко настраиваемый и скриптовый :slight_smile:
  • легкое составление, редактирование и управление записями
  • архивирование по категории, году, месяцу, дню и записи
  • разбивка на страницы
  • постоянные и навигационные ссылки
  • шаблоны и таблицы стилей CSS для полного контроля над макетом
  • заполнители для удобной работы с шаблоном
  • поддержка нескольких веб-журналов
  • поддержка нескольких категорий (тегов)
  • поддержка относительных и абсолютных ссылок
  • поддержка управления датой записей
  • Синдикация Atom (поставляется в формате 1.0)
  • RSS-синдикация (поставляется с форматами RSS 2.0 и 1.0)
  • плагины для календаря, последних записей, статуса блога и т. д.
  • плагины для форматирования текста (например, перевод строк в HTML)
  • глобальная (nb.conf) и индивидуальная (blog.conf) конфигурация
  • интеллектуальная система обновления - обновляет только относительные файлы
  • простая система кеширования для повышения эффективности
  • независимо от java-скриптов и серверных скриптов (например, PHP)
  • не зависит от внешней базы данных (хранит данные в плоских файлах)
  • многоязычная поддержка
  • мультиплатформенная переносимость (только Bash и необходимые команды)

3. Требования

Программы:

Bash (как минимум v2.05), cat, cp, cut, dirname, date *, grep, mkdir, mv, rm, sed, sort

  • = Версия GNU рекомендуется, но не требуется

4. Начало работы

Создание нового блога

Чтобы создать новый блог (из командной строки):

nb --blog-dir [myblog_dir] добавить блог

где myblog_dir - несуществующий каталог. Это создаст новый каталог, скопирует файлы по умолчанию и, наконец, позволит вам редактировать конфигурацию веб-журнала. Таким образом можно создать несколько веб-журналов.

Чтобы установить каталог веб-журнала по умолчанию:

  1. отредактируйте либо nb.conf, либо $ HOME / .nb.conf.
  2. установите BLOG_DIR в каталог вашего блога:
    BLOG_DIR = “$ HOME / public_html / [myblog_dir]”

Вы также можете перейти в каталог веб-журнала, и NanoBlogger автоматически установит для вас $ BLOG_DIR , поэтому вам не нужно указывать его из командной строки.

5. Настройки и конфигурация

Чтобы изменить конфигурацию веб-журнала, вызовите:

nb --blog-dir [myblog_dir] настроить обновить все

Это откроет blog.conf из каталога веб-журнала для редактирования и обновит весь веб-журнал.

Настройка браузера

_NB_BROWSER_ определяет используемый браузер, и по умолчанию используется стандартная переменная _BROWSER_ . Вы можете указать другой браузер для использования, установив _NB_BROWSER_ в _blog.conf_ . В Mac OS X вы можете установить для него значение «открыть». Если браузер не указан, будет использоваться «lynx».

Настройка редактора

_NB_EDITOR_ определяет используемый редактор и по умолчанию использует стандартную переменную _EDITOR_ . Вы можете указать другой редактор для использования, установив _NB_EDITOR_ в _blog.conf_ . Если редактор не указан, будет использоваться vi.

Установка формата даты для новых записей

_DATE_FORMAT_ определяет формат даты, используемый для новых записей. По умолчанию используется вывод команды _date_ . Вы также можете указать языковой стандарт, который будет использоваться для команды даты (см. Переменную _DATE_LOCALE_ ). Вы можете указать дополнительные аргументы командной строки с помощью _DATE_ARGS_ , что полезно для указания времени в формате UTC. Обратите внимание, что эти настройки **не влияют** на предыдущие записи и что, если вы используете UTC, остерегайтесь условий гонки, которые могут возникнуть из-за того, что имя файла записи не будет синхронизировано. Решение состоит в том, чтобы также изменить _DB_DATEARGS_ на _DATE_ARGS._, так что они отражают одну и ту же дату и время. Прочтите справочные страницы команды date, чтобы узнать, как настроить формат вывода команды date.

Примеры:

DATE_FORMAT = “% m.% D.% Y% H:% M”
DATE_LOCALE = “$ LANG”
DATE_ARGS = “- u”

Установка часового пояса

_BLOG_TZD_ устанавливает часовой пояс для ваших записей в блоге. По умолчанию это устанавливается автоматически с "%z"использованием нестандартного расширения команды date. Если команда date в вашей системе не поддерживает это, вам придется установить это вручную.

Пример:

BLOG_TZD = "- 0: 500"

Установка кодировки

_BLOG_CHARSET_ устанавливает кодировку символов, которая будет использоваться для вашего веб-журнала.

Пример:

BLOG_CHARSET = “iso-8859-1”

ВНИМАНИЕ : если у вас включен плагин Tidy, этот параметр будет отменен Tidy. Пожалуйста, обратитесь к документации Tidy для настройки кодировки символов.

Установка типа пантомимы

_BLOG_MIMETYPE_ устанавливает тип MIME, который будет использоваться для вашего веб-журнала.

Пример:

BLOG_MIMETYPE = “текст / html”

Настройка веб-адреса

_BLOG_URL_ должен быть установлен как полный URL-адрес вашего веб-журнала, за исключением индексного файла и любого предшествующего символа "/".

Пример:

BLOG_URL = “http://my-site.com/weblog

Настройка таблицы стилей

_BLOG_CSS_ устанавливает таблицу стилей, которая будет использоваться вашим блогом. Таблицы стилей находятся в каталоге _стилей_ .

Пример:

BLOG_CSS = “стили / nb_clean.css”

Установка значка избранного

_BLOG_ICON_ устанавливает избранный значок, который будет использоваться вашим блогом. Избранные значки находятся в каталоге _изображений_ .

Пример:

BLOG_ICON = "images / favicon.ico"

Переключение отображения индексного файла каталога в ссылках

_SHOW_INDEXFILE_ переключает отображение файла индекса каталога в ссылках. По умолчанию "1", включено.

Установка имени автора

_BLOG_AUTHOR_ можно использовать для установки имени автора, по умолчанию имя автора устанавливается с помощью общей переменной USER. Установка _BLOG_AUTHOR_ переопределит это поведение.

**Установка значения по умолчанию для запроса "max"**

MAX_ENTRIES устанавливает максимальное количество записей, возвращаемых запросом «max». По умолчанию “10”.

Установка максимального количества отображаемых записей для всех страниц с разделителями

_MAX_PAGE_ENTRIES_ устанавливает максимальное количество записей по умолчанию для отображения для всех страниц с разделителями. По умолчанию «$ MAX_ENTRIES».

MAX_CATPAGE_ENTRIES устанавливает максимальное количество записей, отображаемых для каждой страницы архива категории. По умолчанию “$ MAX_PAGE_ENTRIES”. Архивы категорий будут разделены, если количество записей превышает $ MAX_CATPAGE_ENTRIES .

_MAX_MONTHPAGE_ENTRIES_ устанавливает максимальное количество записей, отображаемых для каждой страницы архива за месяц. По умолчанию "$ MAX_PAGE_ENTRIES". _Месячные_ архивы будут разделены, если количество записей превышает _$ MAX_MONTHPAGE_ENTRIES_ .

MAX_MAINPAGE_ENTRIES устанавливает максимальное количество записей, отображаемых для каждой главной страницы. По умолчанию “$ MAX_PAGE_ENTRIES”. Главная страница будет разделена, когда на $ MAX_MAINPAGE_ENTRIES меньше результатов MAINPAGE_QUERY .

Установка запроса по умолчанию для главной страницы

_MAINPAGE_QUERY_ устанавливает запрос по умолчанию для главной страницы. По умолчанию «макс». В сочетании с _MAX_MAINPAGE_ENTRIES_ его можно использовать для _разбивки_ на страницы главной страницы.

**Установка форматирования текста по умолчанию**

ENTRY_FORMAT определяет форматирование текста по умолчанию, используемое для новых записей. По умолчанию “сырой”.

Переключение создания архивов записей

Установка ENTRY_ARCHIVES в значение «1» позволяет создавать архивы записей и перенастраивает ссылки записей, чтобы они указывали на их собственную страницу архива.

Переключение создания архивов месяцев

Установка MONTH_ARCHIVES равной «1» позволяет создавать архивы по месяцам.

Переключение создания дневных архивов

Установка для DAY_ARCHIVES значения “1” позволяет создавать дневные архивы и перенастраивает ссылки записей, чтобы они указывали на их собственную страницу архива, когда $ ENTRY_ARCHIVES не включен.

Особые настройки архивирования

_CATARCH_DATATYPE_ определяет набор метаданных для загрузки для архивов категорий.

MONTHARCH_DATATYPE определяет набор метаданных для загрузки для архивов месяца.

_DAYARCH_DATATYPE_ определяет набор метаданных для загрузки дневных архивов.

Можно указать два типа данных: «ВСЕ» или «НИКТО»:

ALL = метаданные с полной записью (медленный и больший кеш)
NOBODY = все, кроме метаданных BODY записи (более быстрый и меньший кеш)



ВАЖНО : отредактируйте (или создайте) [category_entry.htm][7] , month_entry.htm и day_entry.htm соответственно.

**Установка хронологического порядка**

CHRON_ORDER указывает хронологический порядок архива веб-журнала - 0/1 = нормальный / обратный. По умолчанию «1», в обратном порядке.

ПРЕДУПРЕЖДЕНИЕ . Если вы не воспользуетесь действием «настроить», чтобы изменить это, базы данных не будут преобразованы для отражения нового хронологического порядка.

Настройка действий для предварительного просмотра и публикации

_BLOG_PREVIEW_CMD_ и _BLOG_PUBLISH_CMD_ могут быть настроены как настраиваемая команда для запуска при вызове их соответствующими действиями, _предварительным просмотром_ и _публикацией_ .

**Установка настроек кеширования**

MAX_CACHE_ENTRIES устанавливает максимальное количество записей для хранения в кеше. По умолчанию «$ MAX_ENTRIES».

Установка BLOG_CACHEMNG в «0» отключает автоматическое управление кешем. Кешем можно управлять вручную с помощью действия update-cacheкомандной строки.

Переключение интерактивного режима

_BLOG_INTERACTIVE_ переключает интерактивный режим для вашего веб-журнала и имеет тот же эффект, что и параметр --interactiveкомандной строки. По умолчанию «0» отключено, установка «1» снова включит режим.

**Переключение отображения статистики времени**

SHOW_TIMES переключает отображение общего пользовательского и системного времени для процесса сборки. Это, вероятно, окажется полезным только в том случае, если в вашей системе еще нет команды time. По умолчанию “0” выключено, установка “1” снова включит его.

Изменение типа файла

_NB_FILETYPE_ указывает тип файла или, скорее, суффикс для сгенерированных файлов. По умолчанию установлено значение «html».

**Изменение временного каталога**

NB_TEMP_DIR указывает место для временного хранения данных. По умолчанию это «/ tmp», но может быть изменено для каждого веб-журнала на более частную территорию в качестве дополнительной меры безопасности в многопользовательских системах.

Изменение режима запроса по умолчанию

_QUERY_MODE_ указывает режим запроса по умолчанию для всех операций веб-журнала. По умолчанию "все", но может быть практически любым допустимым запросом. См. Действие «запрос» для некоторых возможных запросов.

**Конфигурация ссылок**

ABSOLUTE_LINKS переключает между абсолютными и относительными ссылками. По умолчанию “0”, относительные ссылки.

_FRIENDLY_LINKS_ переключает между дружественными и недружественными ссылками. Дружественные ссылки больше основаны на тексте, а недружественные - на числах. По умолчанию "1", дружественные ссылки.

MAX_TITLEWIDTH устанавливает максимальную ширину заголовка (по количеству символов), создаваемую для дружественных ссылок.

_SHOW_CATLINKS_ переключает отображение категорий (тегов) записи. По умолчанию отображается.

PERMALINKS переключает отображение постоянной ссылки записи. По умолчанию отображаются постоянные ссылки.

Конфигурация плагинов

_PLUGINS_DIR_ указывает расположение каталога глобальных плагинов. Глобальные плагины влияют на все блоги. По умолчанию установлено значение _$ NB_BASE_DIR / plugins_ .

USR_PLUGINSDIR указывает расположение каталога пользовательских плагинов. Пользовательские плагины влияют только на указанный блог. Глобальные плагины могут быть переопределены пользовательскими плагинами в индивидуальном порядке. Например, если вы скопируете raw.sh в «$ BLOG_DIR / plugins / entry / format /», ваша копия будет использоваться вместо глобального raw.sh. По умолчанию установлено значение $ BLOG_DIR / plugins .

Глобальная конфигурация

NanoBlogger имеет собственный файл конфигурации, $ NB_BASE_DIR / nb.conf, который содержит настройки, влияющие на все веб-журналы. Файл глобальной конфигурации считывается первым, что означает, что настройки в конфигурации веб-журнала могут иметь приоритет над настройками в $ NB_BASE_DIR / nb.conf . Эта конфигурация также ищется в файле $ HOME / .nb.conf .

Изменение языка по умолчанию для NanoBlogger

_NB_LANG_ - глобальная переменная конфигурации, которая устанавливает определение языка для загрузки. По умолчанию для английского языка используется "en". На все определения языков следует ссылаться по их коду ISO 639-2.

Пример для испанского:

NB_LANG = "es"



**Создание определений языков**

Создание определений языка довольно просто:

1. начните с установленного по умолчанию "en".
1. переопределите все переменные на их эквивалентный перевод на целевой язык.
1. сохраните переведенный набор в подкаталог, названный в соответствии с его кодом ISO 639-2 alpha-3 или alpha-2 в каталоге «lang».

## 6. Управление записями и тегами (категориями)

Команды для управления записями и тегами. 

### Управление записями

**Идентификаторы входа**

Последняя добавленная запись всегда будет иметь идентификатор «1», запись, добавленная перед этим, будет иметь идентификаторы с более высокими значениями. Запись может иметь разные идентификаторы для каждого представления тегов. При изменении записей на основе этого тега необходимо указать идентификаторы как для тега, так и для записи.

**Составление записей**

Создание нового черновика:

nb [-b каталог-блога] черновик somefile.txt



Импорт черновика как новой записи:

nb [-b blog_dir] импортировать запись somefile.txt



**Создание записей**

Добавление новой записи:

nb [-b blog_dir] добавить запись



Пометка новой записи: 

nb [-b blog_dir] --tag добавить запись



Установка названия и автора для новой записи: 

nb [-b blog_dir] --title "Новая запись" --author [entry_author] добавить запись



Установка заголовка, автора и тела для новой записи: 

nb [-b blog_dir] --title «Новая запись» --author [entry_author] --text «Это мое сообщение». добавить запись



Импорт новой записи из файла: 

nb [-b blog_dir] импортировать запись somefile.txt



**Листинговые записи**

Листинговые записи:

nb [-b каталог_блога] список [<запрос>]



Список записей по тегу: 

nb [-b blog_dir] тег списка <ID> 



**Редактирование записей**

Редактирование записи:

nb [-b blog_dir] редактировать запись <ID>



Редактирование записи по тегу: 

nb [-b blog_dir] --tag <ID> редактировать запись <ID>



Редактирование нескольких записей: 

nb [-b blog_dir] редактировать запись 1,2,3



**Назначение записей тегам**

Назначение тега записи:

nb [-b каталог-блога] --tag <ID> тег-запись <ID>



Назначение нескольких тегов записи: 

nb [-b каталог-блога] --tag 1,2,3 tag-entry <ID>



Назначение тегу нескольких записей: 

nb [-b каталог-блога] --tag <ID> тег-запись 1,2,3



**Удаление записей**

Удалить запись навсегда:

nb [-b blog_dir] удалить запись <ID>



Удалить несколько записей навсегда: 

nb [-b blog_dir] удалить запись 1,2,3



Отменить пометку записи: 

1.) найдите ID записи в листинге:

nb [-b каталог_бога] --tag <ID> список



2.) удалите запись, используя идентификатор записи, который мы нашли на первом шаге:

nb [-b blog_dir] --tag <ID> удалить запись <ID>



**Изменение даты входа**

Указание даты новой записи с помощью метатега TIMESTAMP:

nb [-b blog_dir] --var TIMESTAMP --set-var "CCYY-MM-DD HH: MM: SS" добавить запись



Изменение даты старой записи: 

nb [-b blog_dir] --var TIMESTAMP --set-var "CCYY-MM-DD HH: MM: SS" редактировать запись <ID>
 


Изменение даты записи вручную: 

1. nb [-b blog_dir] редактировать запись <ID>
2. TIMESTAMP: CCYY-MM-DD HH: MM: SS
 


Команда date должна поддерживать параметр " -d", чтобы дата соответствовала формату, установленному " $DATE_FORMAT"._### Управление тегами

Также известны как категории.

**ID тега**

Идентификатор тега отсчитывается от 1. Идентификатор тега остается постоянным, пока этот тег не будет удален. Удаление тега освободит идентификатор этого тега для использования новым тегом при создании.

**Команды тегов**

Создание нового тега:

nb [-b blog_dir] добавить тег



Установка заголовка для нового тега: 

nb [-b blog_dir] --title примеры добавить тег



Список доступных тегов: 

nb [-b blog_dir] список тегов



Пометка существующих записей: 

nb [-b каталог-блога] --tag <ID> тег-запись <ID>



Редактирование заголовка тега: 

nb [-b blog_dir] --title пример редактировать тег <ID>



Удаление тега: 

nb [-b blog_dir] удалить тег <ID>



### Расширенное управление

Используйте параметр «--query» для управления списком записей, с которыми нужно работать. Сначала просмотрите свой запрос, объединив «--query» с действием «список», чтобы увидеть, какие идентификаторы записи соответствуют вашему запросу. Затем работайте с тем же запросом, комбинируя опцию «--query» с одним из действий «редактировать», «удалить», «tag-entry» или «обновить». Соответственно, используя идентификаторы записей из вашего последнего запроса.

Редактирование записей по запросу:

nb [-b blog_dir] --query <all, CCYY-MM-DD, max> список
nb [-b blog_dir] --query <all, CCYY-MM-DD, max> редактировать запись <ID>


Удаление записей по запросу: 

nb [-b blog_dir] --query <all, CCYY-MM-DD, max> список
nb [-b blog_dir] --query <all, CCYY-MM-DD, max> удалить запись <ID>


Редактирование записей по тегу и запросу: 

nb [-b каталог-блога] --tag <ID> --query <all, CCYY-MM-DD, max> list
nb [-b blog_dir] --tag <ID> --query <all, CCYY-MM-DD, max> редактировать запись <ID>

## 7. Шаблоны

Шаблоны расположены в подкаталоге журнала, templates. 

**Специальные символы шаблона**

ВАЖНО : экранирование этих символов необходимо для предотвращения их интерпретации оболочкой.

Специальные символы, которые при помещении в шаблоны интерпретируются оболочкой, если не экранированы: символыописаниеПримечания$знак долларапрефиксная обратная косая черта для экранирования, например "\ $"`обратная цитатаформа подстановки команд, префиксная обратная косая черта для экранирования, например "\` "$ (знак доллара и левая скобкаформа подстановки команд, префиксная обратная косая черта для экранирования, например, "\ $ ("

**Шаблоны по умолчанию**

Внешний вид блога регулируется следующими шаблонами: шаблоныописаниеcategory_archive.htmуправляет структурой страниц категорийday_archive.htmуправляет структурой страниц дневного архиваmain_index.htmконтролирует структуру главной страницы блогаmain_links.htm *содержит определенные пользователем ссылкиmakepage.htmшаблон по умолчанию, используемый действием make-pagemonth_archive.htmуправляет структурой страниц архива месяцаpermalink.htmуправляет структурой страниц архива записейentry.htmконтролирует структуру содержимого записи для большинства архивовpermalink_entry.htmконтролирует структуру содержимого записи для отдельных архивов записейweblog_status.htmконтролирует структуру статуса блогаyear_archive.htmконтролирует структуру страниц годового архиваentry.metadataуправляет форматом метафайла записиfile.metadataуправляет форматом мета-файла

**Специальные шаблоны**

Внешний вид блога можно дополнительно контролировать с помощью следующих шаблонов: шаблоныописаниеcategory_entry.htmконтролирует структуру и содержание записей категорийmonth_entry.htmконтролирует структуру и содержание записей месяцаday_entry.htmконтролирует структуру и содержание дневных записей

## 8. Плагин "Статьи и статьи"

Статьи не зависят от архивов основного блога и обеспечивают быстрый и простой способ организации и создания дополнительного содержания для блога. Управление почти полностью осуществляется через файловый менеджер (или командную строку). Статьи просто создаются из мета-файлов, находящихся в каталоге статей. Обновление статей происходит при следующем обновлении блога или при принудительном обновлении, в зависимости от того, что произойдет раньше. Генерация списка статей и контента зависит от плагина статей. Для получения дополнительной информации о подключаемом модуле статей, пожалуйста, обратитесь к "* article_meta.sh" в разделе "О подключаемых [модулях"][9] .

### Настройка статей

**Настройка каталога статей**

ARTICLES_DIR устанавливает каталог статей для вашего блога. По умолчанию “статьи”. Можно указать несколько каталогов статей.

Пример:

ARTICLES_DIR = “статьи статьи / разное”

Установка форматирования текста по умолчанию для статей

_ARTICLES_FORMAT_ устанавливает форматирование текста по умолчанию для новых статей. По умолчанию "сырой".

**Установка суффикса по умолчанию для статей**

ARTICLES_SUFFIX устанавливает суффикс для включения в качестве статьи в каталог статей. По умолчанию “.txt”.

Установка шаблона по умолчанию для статей

_ARTICLES_TEMPLATE_ устанавливает шаблон по умолчанию для использования для новых статей. По умолчанию "[каталог_блог /] шаблоны / makepage.htm".

### Добавление новых статей

Создание новых статей упрощается с помощью команды «добавить статью»:

nb [--title 'Example Article'] добавить статью



Импорт новой статьи (в подкаталог существующих статей):

nb import article [blog_dir /] article / misc / example.txt



**Обновление статей вручную**

Обновление списка и содержания статей вручную:

статьи обновления nb

## 9. О плагинах

### Платформа плагинов

**Обычные плагины: плагины**

Обычные плагины безоговорочно инициализируются после запрошенного обновления.

**Плагины архива: плагины / архив**

Плагины архива инициализируются при обновлении архивов.

**Категория Архивные плагины: плагины / архив / категория**

Плагины архива категорий инициализируются для каждого архива категории, который необходимо обновить.

**Плагины дневного архива: плагины / архив / день**

Плагины дневного архива инициализируются для каждого дневного архива, который необходимо обновить.

**Плагины архива месяца: плагины / архив / месяц**

Плагины месячного архива инициализируются для каждого месячного архива, который необходимо обновить.

**Плагины годового архива: плагины / архив / год**

Плагины Year Archive инициализируются для каждого годового архива, который необходимо обновить.

**Плагины входа: плагины / запись**

Плагины ввода инициализируются безоговорочно для каждой обновляемой записи.

**Плагины изменения входа: плагины / запись / мод**

Плагины Entry Modify инициализируются для каждой изменяемой записи.

**Плагины форматирования записи: плагины / запись / формат**

Плагины форматирования записи инициализируются для каждой измененной записи на основе поля метатега FORMAT. Можно указать более одного формата, используя пробел или запятую в качестве разделителя, но следует соблюдать особую осторожность в порядке их указания.

**Плагины страницы: плагины / страница**

Плагины страниц инициализируются безоговорочно перед каждой обновляемой страницей.

**Плагины форматирования страницы: плагины / страница / формат**

Плагины форматирования страницы инициализируются для каждой страницы, которая должна быть обновлена, на основе поля метатега FORMAT. Можно указать более одного формата, используя пробел или запятую в качестве разделителя, но следует соблюдать особую осторожность в порядке их указания.

**Создание подключаемых модулей страницы: plugins / makepage**

Плагины Make Page инициализируются после каждой обновляемой страницы.

**Плагины публикации: плагины / сообщения**

Плагины сообщений инициализируются безоговорочно для задач, связанных с публикациями блогов.

Примечание. _Большинство плагинов после инициализации будут работать в своих собственных условиях, другими словами, больше не будут безоговорочно._

**Плагины по умолчанию**

Плагины по умолчанию (большинство из них включены по умолчанию): плагиныописаниепеременныецелиПримечанияархив / день / cal2daytitle.shсоздает более интересное название для дневных архивовCAL_CMD, CAL_ARGS, DATE_LOCALE$ NB_ArchiveTitleтребуется команда calархив / месяц / month_calendar.shгенерирует календарь со ссылками на каждый активный деньCAL_CMD, CAL_ARGS, DATE_LOCALE$ NB_MonthlyCalendarтребуется команда calархивы / год / year_index.shсоздает архивы годаникто$ ARCHIVES_DIR / $ yearn / index. $ NB_FILETYPEтребуется шаблон makepage.htmarticle_meta.sh *генерирует статьи из мета-файлов в каталоге "статьи"ARTICLES_DIR, ARTICLES_FORMAT$ NB_ArticleLinksтребуется шаблон makepage.htm, плагин нужно заказывать так, чтобы он загружался последнимatom.shдобавляет фид атомаBLOG_FEED_ITEMS, ATOM_ITEMS, ATOM_CATFEEDS, ATOM_FEED_LANG$ NB_AtomVer, $ NB_AtomFile, индекс-атом. $ NB_SYND_FILETYPEниктоcalendar.shгенерирует календарь со ссылками на каждый активный деньCAL_CMD, CAL_ARGS, DATE_LOCALE$ NB_Calendarтребуется калentry / category_links.shгенерирует ссылки на категорииникто$ NB_EntryCategoriesниктозапись / выдержка.sh *создает отрывок из текста записиникто$ NB_EntryExcerptзаканчивается после первого обнаруженного двойного разрыва строки (пустая строка)запись / формат / autobr.shпреобразует пустые строки в разрывы абзацев HTMLникто$ NB_MetaBody, $ NB_EntryBodyФОРМАТ: autobrзапись / формат / markdown.shиспользует уценку для обработки форматированияMARKDOWN_CMD, MARKDOWN_OPTS$ NB_MetaBody, $ NB_EntryBodyФОРМАТ: уценказапись / mod / base_url.shпомогает установить относительные ссылки% base_url%$ NB_EntryBodyпример: <img src = "% base_url% images / pic.png" />запись / mod / moods.shконвертирует переменные настроения в значки смайликовMOODS_URL$ NB_EntryBodyскопировать каталог настроения в каталог веб-журналаfortune.shгенерирует случайные котировкиFORTUNE_CMD, FORTUNE_FILE$ NB_Fortuneтребует удачиmakepage / tidy.shпроверяет код HTML / XMLTIDY_CMD, TIDY_HTML_ARGS, TIDY_XML_ARGS$ NB_Tidy, $ BLOG_DIR / tidy.logтребует HTML Tidy, переопределяет $ BLOG_CHARSETmymood.sh *добавляет возможность отображать ваше настроениеMOODS_URL$ NB_MyMoodскопировать каталог настроения в каталог веб-журналаpage / feed_links.shгенерирует альтернативные ссылки для каналовникто$ NB_AtomAltLink, $ NB_RSS2AltLink, $ NB_RSSAltLinkтребуется один из плагинов atom.sh, rss.sh или rss2.shpage / page_links.shвосстанавливает ссылки для включения на другие страницыникто$ NB_MainLinks, $ NB_RecentEntries, $ NB_CategoryLinks, $ NB_MonthLinks и т. Д.требуется один из плагинов weblog_links.sh или latest_entries.shстраница / формат / autobr.shпреобразует пустые строки в разрывы абзацев HTMLникто$ NB_MetaBody, $ NB_EntryBodyФОРМАТ: autobrстраница / формат / markdown.shиспользует уценку для обработки форматированияMARKDOWN_CMD, MARKDOWN_OPTS$ NB_MetaBody, $ NB_EntryBodyФОРМАТ: уценкастраница / формат / moods.shконвертирует переменные настроения в значки смайликовMOODS_URL$ NB_MetaBody, $ NB_EntryBodyможет сочетаться с другими, например "ФОРМАТ: настроение, уценка"Recent_entries.shгенерирует списки недавних и старых записейRECENTLIST_ENTRIES, RECENTLIST_OFFSET, RECENTLIST_MODE$ NB_RecentEntries, $ NB_OlderEntriesниктоrss2.shдобавляет RSS 2.0 каналыBLOG_FEED_ITEMS, RSS2_ITEMS, RSS2_CATFEEDS, BLOG_FEED_LANG$ NB_RSS2File, индекс-rss. $ NB_SYND_FILETYPEниктоrss.shдобавляет RSS 1.0 каналыBLOG_FEED_ITEMS, RSS_ITEMS, RSS_CATFEEDS, BLOG_FEED_LANG$ NB_RSSFile, индекс. $ NB_SYND_FILETYPEниктоweblog_links.shгенерирует несколько полезных ссылокALL_YEARLINKS, MAX_YEARLINKS, ALL_MONTHLINKS, MAX_MONTHLINKS$ NB_MainLinks, $ NB_MonthLinks, $ NB_CategoryLinksтребуется шаблон main_links.htmweblog_status.shгенерирует некоторую статистикуникто$ NB_BlogStatusтребуется шаблон weblog_status.htm

* = фактическое имя может отличаться.

Чтобы отключить отдельный плагин, переименуйте расширение плагина с «.sh» на «.off».

## 10. Настройка плагинов

Настройки плагинов хранятся и устанавливаются в вашем блоге blog.conf.

### Настройка подключаемых модулей распространения

Синдикация вашего блога достигается с помощью плагинов NanoBlogger. Обратите внимание, что для правильного распространения требуется полный и доступный в Интернете URL-адрес. Это можно установить с помощью _BLOG_FEED_URL_ . Также разумно установить правильный часовой пояс для ваших каналов распространения. Для этого обратитесь к _BLOG_TZD_ в [разделе «Настройки и конфигурация»][5] .

**Настройка веб-адреса**

BLOG_FEED_URL устанавливает URL-адрес для каналов распространения. По умолчанию «$ BLOG_URL», только если он уже установлен.

Пример:

BLOG_FEED_URL = “http://www.example.com/johndoe/weblog

Установка часового пояса

_BLOG_FEED_TZD_ устанавливает часовой пояс, используемый для каналов синдикации. По умолчанию "$ BLOG_TZD".

**Настройка языка**

BLOG_FEED_LANG устанавливает язык, используемый в ваших каналах распространения.

Пример:

BLOG_FEED_LANG = “ru-ru”

_ATOM_FEED_LANG_ устанавливает язык для каналов синдикации Atom.

Пример:

ATOM_FEED_LANG = "ru"



ПРИМЕЧАНИЕ . Код языка для каналов синдикации Atom отличается от стандарта RSS.

**Установка максимального количества элементов для синдиката**

BLOG_FEED_ITEMS устанавливает максимальное количество записей для включения в ваши каналы распространения, независимо от $ MAX_ENTRIES . По умолчанию “10”. Для целей экспорта вы можете установить для него значение «-1», чтобы включить все существующие записи веб-журнала.

Пример:

BLOG_FEED_ITEMS = “10”

Поддержка таблиц стилей

_BLOG_FEED_CSS_ устанавливает таблицу стилей, используемую для ваших каналов синдикации (путь должен быть относительным).

Пример:

BLOG_FEED_CSS = "стили / feed.css"



**Поддержка значков и логотипов**

BLOG_FEED_ICON устанавливает значок для ваших каналов синдикации (путь должен быть относительным).

Пример:

BLOG_FEED_ICON = “images / feedicon.png”

_BLOG_FEED_LOGO_ устанавливает логотип для ваших каналов синдикации (путь должен быть относительным).

Пример:

BLOG_FEED_LOGO = "images / feedlogo.png"



ПРИМЕЧАНИЕ . В модуле распространения RSS 2.0 будет использоваться логотип, если значок не установлен.

**Поддержка синдицированных категорий**

Включить каналы синдикации по категориям можно тремя способами:

1. _CATEGORY_FEEDS_ переключает все поддерживаемые методы объединения категорий. По умолчанию «0» - отключено.
1. _ATOM_CATFEEDS_ переключает синдикацию Atom для каждой категории. По умолчанию «0» - отключено.
1. _RSS2_CATFEEDS_ переключает синдикацию RSS 2.0 для каждой категории. По умолчанию «0» - отключено.

**Поддержка создания подкастов**

Существует специальный метатег ENCLOSURE, который используется для установки данных вложения для каждой записи. Мета-тег ENCLOSURE должен содержать два разных набора данных, разделенных одним пробелом. Локальный медиа-файл и тип медиа (например, аудио / MPEG).

Пример:

ПРИЛОЖЕНИЕ: mp3s / mypodcast.mp3 audio / mpeg



Медиа-файл должен быть по относительному пути, который можно найти в _$ BLOG_DIR_ . Системная команда du -b требуется для получения длины медиафайла для завершения данных вложения. Команда «du» должна быть включена в большинство систем, где поддерживается Bash, но нет гарантии, что синтаксис будет таким же. Автоопределение типа носителя не поддерживается, его нужно определять и настраивать вручную. Корпуса поддерживаются как для плагинов синдикации Atom, так и для RSS2.

### Проверка синтаксиса и переформатирование

Плагин Tidy обеспечивает проверку и переформатирование синтаксиса. Такие инструменты могут быть и вашим другом, и вашим врагом, то есть иногда они могут слишком хорошо скрывать (исправлять) ваши ошибки. Журнал ведется в каталоге вашего веб-журнала, поэтому вы можете просматривать любые ошибки или изменения, записанные Tidy.

Есть две переменные конфигурации Tidy. Один для HTML и один для XML (плагины для распространения). Как отмечалось в [разделе «Настройки и конфигурация»][5] , Tidy имеет тенденцию переписывать все, что вы установили в _$ BLOG_CHARSET_ . Так что будьте осторожны.

TIDY_HTML_ARGS устанавливает аргументы команды для tidy-команды.

_TIDY_XML_ARGS_ устанавливает аргументы команды для tidy-команды при проверке XML каналов распространения.

Примеры:

TIDY_HTML_ARGS = "- asxhtml -n -utf8"
TIDY_XML_ARGS = "- xml -n -utf8 -wrap 0"



Более продвинутая конфигурация, включая настройки, может быть достигнута с помощью пользовательских плагинов.

## 11. Написание плагинов

### Инструменты для разработки плагинов

Плагины обычно работают, создавая заполнители для шаблонов, но никоим образом не ограничиваются созданием заполнителей. Заполнители позволяют в значительной степени контролировать то, как вывод плагинов размещается в шаблоне. Некоторые плагины могут потребовать от вас определить его уникальный заполнитель / место назначения и вручную добавить его в свои шаблоны.

Чтобы написать плагин, вы должны начать с создания текстового файла с суффиксом _«.sh»_ . плагины - это в основном сценарии оболочки, которые загружаются (исходят в терминах оболочки) в зависимости от того, где плагин расположен в каталоге плагинов или в одном из подкаталогов плагинов. Было бы неплохо взглянуть на простой плагин, такой как fortune.sh, чтобы понять, как он работает. Когда новый плагин сохраняется, он должен иметь соответствующие разрешения на чтение, чтобы его можно было загрузить с помощью NanoBlogger. Для подключаемых модулей разрешения на исполняемые файлы не требуются.

Ниже приводится набор инструментов, которые могут быть полезны при разработке собственных плагинов.

**Плагин API**

API для написания плагинов. командаописаниепеременные и переключателицелиПримечанияумеретьвыходит с сообщением об ошибке$ @стандартный выводвозвращает статус выхода 1nb_browserразумно-браузерная утилита для запуска браузера$ NB_BROWSER, $ BROWSER, $ 1стандартный выводанализирует $ BROWSER с разделителем ":"nb_editпростая оболочка для редактора$ NB_EDITOR, $ EDITOR, $ 1, $ 2, -p = принудительное приглашение (пауза)стандартный выводесли $ 2 имеет значение null, тогда $ 1 считается файломnb_printпечатает файл построчноимя файла = $ 1, количество строк = $ 2 (пусто для всех)стандартный выводиспользуйте вместо "sed 1q"nb_msgпредпочтительный метод многословия$ @стандартный выводпри необходимости используйте вместо эхаconfirm_actionпопросить пользователя подтвердить действиениктостандартный выводможно использовать с $ BLOG_INTERACTIVEchg_suffixизменяет суффикс файлаимя файла = $ 1, суффикс = $ 2файлможно указать $ NB_FILETYPE, $ NB_SYND_FILETYPE как суффиксquery_dbбаза данных запросовdb_query = $ 1, db_catquery = $ 2, db_setlimit = $ 3 db_limit = $ 4, db_offset = $ 5$ DB_RESULTSпример (извлекает записи с 1 по 10): "query_db all nocat limit 10 1"lookup_idидентификатор поиска элемента, сопоставленного из основной базы данных1 доллар, 2 долларастандартный выводпример: lookup_id 2005-12-14T00_00_00. $ NB_DATATYPE "$ MASTER_DB_RESULTS"translit_textтранслитерирует текст в подходящую форму для веб-ссылок1 долларстандартный выводниктоset_baseurlпомогает в установке относительных ссылокnode_var = $ 1, base_dir = $ 2$ BASE_URL, $ ARCHIVES_PATHдолжен указывать только один из node_var или base_dir за разset_catlinkустанавливает ссылку и файл для данной категории1 доллар$ category_file, $ category_linkкатегория должна иметь вид cat_N. $ NB_DBTYPEset_daylinkустанавливает ссылку и файл для данного дня1 доллар$ day_file, $ day_linkдень должен иметь вид CCYY-MM-DDset_monthlinkустанавливает ссылку и файл для данного месяца1 доллар$ month_file, $ month_linkмесяц должен иметь формат CCYY-MMset_entryidустанавливает привязку / идентификатор для данной записи1 долларстандартный выводзапись должна иметь вид CCYY-MM-DDTHH_MM_SS. $ NB_DATATYPEset_entrylinkустанавливает ссылку и файл для данной записи1 доллар$ entry_dir, $ permalink_file, $ NB_EntryPermalinkзапись должна иметь вид CCYY-MM-DDTHH_MM_SS. $ NB_DATATYPEupdate_cacheсоставляет список или удаляет записи из кешаcache_update = $ 1, cache_def = $ 2, CACHEUPDATE_LIST = $ 3$ CACHE_LISTобычно используется для истечения срока хранения кэшированных данныхload_templateзагружает шаблон из файлаTEMPLATE_FILE = 1 доллар США$ TEMPLATE_DATAникогда не загружайте данные шаблона более одного раза, make_page вызывает load_templatewrite_templateзаписывает данные шаблона в стандартный вывод$ TEMPLATE_DATAстандартный выводпример: write_template> "$ OUTFILE"load_metadataзагружает метаданные из (входного) файлаMETADATA_TYPE = $ 1, $ METADATA_FILE = $ 2зависит от $ METADATA_TYPEтип метаданных может быть ALL, NOBODY, BODY, TITLE, AUTHOR, DATE, DESC, FORMATwrite_metadataзаписывает метаданные в файлMVAR = $ 1, МЕТАДАННЫЕ = $ 2, META_FILE = $ 3$ META_FILEпример: "write_metadata UPDATED" `date`" $ meta-file "read_metadataизвлекает метаданные из (входного) файлаMVAR = 1 доллар, META_FILE = 2 доллара$ МЕТАДАННЫЕсм. плагин latest_entries.sh для хорошего примераwrite_varсоздать / изменить поле метеданных пользователяWRITE_MVAR = $ 1, WRITE_MVARVALUE = $ 2, WRITEMETAVAR_FILE = $ 3$ WRITEMETAVAR_FILEпример: write_var MODTIME "$ (дата)" $ метафайлloop_archiveпросматривает архивы и выполняет инструкции по годам или месяцамlooparch_list = $ 1, looparch_type = $ 2, looparch_exec = $ 3определяется $ looparch_execпример: "query_db max; loop_archive" $ DB_RESULTS "months make_monthlink"load_entryзагружает входные данные для шаблоновENTRY_FILE = $ 1, ENTRY_DATATYPE = $ 2, ENTRY_CACHETYPE = $ 3$ NB_EntryTitle, $ NB_EntryBody, ...см. плагин atom.sh для хорошего примераmake_pageсоздает страницу блога из текстового файлаMKPAGE_SRCFILE = $ 1, MKPAGE_TMPLFILE = $ 2, MKPAGE_OUTFILE = $ 3$ MKPAGE_CONTENT, $ NB_MetaBodyсм. плагин article_text.sh для хорошего примераweblog_pageсоздает страницу блога из метафайлаBLOGPAGE_SRCFILE = $ 1, BLOGPAGE_TEMPLATE = $ 2, $ BLOGPAGE_OUTFILE = $ 3$ MKPAGE_CONTENT, $ NB_MetaBodyсм. плагин article_meta.sh для хорошего примера

## 12. Издательское дело

**Установка команды публикации**

BLOG_PUBLISH_CMD переменная позволяет установить команду опубликовать свой блог. Это может быть как простая команда FTP для загрузки файлов, так и более сложный набор задач с помощью сценария.

Публикация удаленно

FTP, SSH (scp, sftp и т. Д.), RSYNC или WebDAV - все это методы, которые можно использовать для публикации веб-журнала.

Пример : автоматизация публикации с помощью ftp и .netrc.

blog.conf:

BLOG_PUBLISH_CMD = “ftp example.weblog.com

.netrc:

машина example.weblog.com логин foo пароль
ВЕРНО!
macdef init
пассивный на
подсказать
ЖК-дисплей ~ / public_html / blog
mput *. *
cd архивы
lcd архивы
mput *

Публикация на местном уровне

Если вы выберете локальную публикацию, вы, вероятно, захотите отключить команду публикации. Для этого вы можете установить для BLOG_PUBLISH_CMD значение null. например, BLOG_PUBLISH_CMD = “”

13. Добавление поддержки комментариев

Сервисы комментариев и надстройки: NanoBlogger Comments, CGIComment, blogkomm [1], JS-Kit [2] и Haloscan.com [3].

Выберите один и следуйте прилагаемым инструкциям по установке.

14. Импорт записей

Чтобы импортировать записи, данные необходимо сначала преобразовать в формат NanoBlogger.

Формат записи

Имя файла записи имеет формат:

CCYY-MM-DDTHH_MM_SS.txt

Таким образом, типичное имя файла записи будет выглядеть примерно так:

2004-06-25T22_24_37.txt

Формат записи состоит из мета-тегов. Большинство мета-тегов имеют формат VAR: VALUE, а затем возврат каретки, отделяющий один метатег от следующего. Порядок мета-тегов не имеет значения. ТЕЛА специальная переменная и должна быть прекращена _END _ маркером. По умолчанию содержимое переменной BODY должно содержать действительный HTML-код со всеми сущностями, экранированными должным образом.

Пример формата записи:

НАЗВАНИЕ: Новая запись
АВТОР: foo
ДАТА: 30 января 2004 г., 12:00.
DESC: ключевые слова или короткое однострочное резюме
ФОРМАТ: необработанный

ТЕЛО:

Это моя новая запись ...

КОНЕЦ

Преобразование записей

Прежде чем записи можно будет импортировать, они должны быть преобразованы в правильный формат.

Шаги по преобразованию записей:

  1. Преобразуйте каждую запись так, чтобы каждая из них содержала следующие метатеги: TITLE, AUTHOR, DATE, DESC, FORMAT, BODY.
  2. Метатег BODY должен заканчиваться словом «END ».
  3. Переименуйте имя файла каждой записи на соответствующую дату и время.

Если записей несколько, неплохо было бы автоматизировать все это с помощью сценария.

Обновление каталога данных веб-журнала

Импортированные данные должны быть скопированы в данные директории вашего блога.
Обновите блог новыми записями:

nb [-b blog_dir] - принудительно обновить все

14. Советы и хитрости

Полезные команды редактора

Создайте новый мета-файл:

nb [-b каталог-блога] make-файл somefile.txt

Импортируйте метафайл как новую запись в блог:

nb [-b blogdir] импортировать запись somefile.txt

или экспортируйте мета-файл как новую страницу блога:

nb [-b каталог-блога] make-page somefile.txt somefile.html

Обратите внимание, что эти задачи упрощаются, когда редактор поддерживает под-оболочку или когда вы можете приостановить работу редактора с активной оболочкой (при условии, что она есть).Написание мета-тегов на лету

Мета-теги - это просто теги, относящиеся к метафайлу. Например, форматированием текста можно управлять из командной строки.

nb [-b blogdir] --var FORMAT --set-var “markdown” make-page somefile.txt somefile.html

В настоящее время одновременно можно указывать только один метатег.

Установить каталог веб-журнала по умолчанию

По умолчанию вы должны указать каталог веб-журнала, но, установив BLOG_DIR, вам не придется. Отредактируйте nb.conf или $ HOME / .nb.conf :

BLOG_DIR = "/ путь / к / блогу"

Отключение плагинов

Вы можете отключить глобальные плагины или все плагины.

Чтобы отключить глобальные плагины, отредактируйте blog.conf и измените PLUGINS_DIR на уже существующий каталог:

PLUGINS_DIR = “$ BLOG_DIR / плагины”

Чтобы отключить все плагины, включая пользовательские, отредактируйте blog.conf и измените PLUGINS_DIR и USR_PLUGINSDIR на уже существующий (пустой) каталог:

PLUGINS_DIR = “$ BLOG_DIR / без плагинов”
USR_PLUGINSDIR = “$ BLOG_DIR / без плагинов”

Как отмечалось ранее, плагины можно отключить в индивидуальном порядке, изменив их суффикс на что-нибудь, кроме «.sh».

Добавление сценариев оболочки к вашим шаблонам

В ваших шаблонах можно использовать подстановку команд, используя одну из следующих форм:

$ (команда)
или
команда

Добавьте введение в свой блог

Создайте текстовый файл в каталоге вашего веб-журнала с именем “intro.txt”. Отредактируйте текстовый файл так, как вам нравится, а затем добавьте в основной шаблон следующее:

$ (<"$ BLOG_DIR / intro.txt")

Интеграция частей вашего блога в существующий веб-сайт

Многие части веб-журнала хранятся и создаются в каталоге частей . Допустим, у вас уже есть веб-сайт, полный ваших собственных серверных скриптов / включений, но вы хотите добавить раздел новостей. Здесь и появляется файл “parts / index.html”. Он содержит все самые последние записи, поэтому добавление раздела новостей / дневника / блога - это всего лишь вопрос добавления кода для включения “parts / index.html” в страница.

Другие умные применения включают объединение статического вывода NanoBlogger с некоторым PHP или Perl. Например, предположим, что вам нужны некоторые боковые ссылки, например, недавние записи. Используя PHP, установите для NB_FILETYPE значение «php» и измените соответствующие шаблоны, чтобы включить код PHP, который извлекает данные из каталога частей. Одним из главных преимуществ этого является отсутствие необходимости перестраивать архивы всего веб-журнала, просто чтобы ссылки оставались актуальными.

Встраивание других переменных в шаблоны

Любые символы, похожие на символы переменной оболочки или подстановки команд, должны быть экранированы, прежде чем они будут работать из шаблонов.

Пример использования переменных в PHP-коде:

<? php
\ $ VAR = массив ();
echo "\\\ $ VAR = \ $ VAR";
php?>

16. Кредиты

Спасибо Adrien “ze” Urban, Paul Drain, Pavel Janik и ORSenthil Kumaran за все вклады и предложения. Спасибо Боуи Дж. Поагу, автору MicroBlogger, за вдохновение для этого проекта. Особая благодарность принадлежит дневнику Теда Вальтера [4], который вдохновил Боуи на создание MicroBlogger. Наконец, спасибо всем, кто когда-либо вносил патч или запрос функции - см. ChangeLog.

Авторские права © 2003-2008 Кевин Вуд. Все права защищены.