Темы

МойнМойн использует систему подключаемых тем, которая позволяет гибко настраивать внешний вид и поведение без изменения основного кода сервера. Пользователь может выбирать используемую тему из списка предустановленных1 в своих настройках (это может быть недоступно в случае, если администратор принудительно указал определённую тему и запретил возможность её смены).

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

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

Обычно для установки темы недостаточно просто скопировать содержимое архива в каталог `themes`. Для установки настоятельно рекомендуется следовать инструкциям, указанным автором темы. Обычно, затрагиваются два места:

  1. Каталог, где хранятся статические файлы темы.
    • Сюда следует поместить каталог с файлами темы (содержащий подкаталоги `css/`, `img/` и, возможно, некоторые другие).
  2. Каталог `data/plugin/theme`, где хранятся исполняемые части тем.
    • Сюда следует поместить скрипт (он имеет то же имя, что и тема и расширение «`.py`»).

После выполнения указанных действий тема должна быть доступна для использования. Возможно, для того, чтобы она появилась в списке доступных тем потребуется очистить кэш или повторно войти в вики. Для опций конфигурации см. КакНастраивать.

Изменение тем

Можно свободно изменять предустановленные темы, но лучше использовать копию. Для её создания необходимо выполнить следующее (здесь в качестве примера используется тема `modern`):

  1. Создать копию каталога `modern` в каталоге со статическим содержимым и назвать её, например, `mytheme`.
  2. Скопировать скрипт темы `MoinMoin/theme/modern.py` в `data/plugin/theme/mytheme.py`.
  3. Отредактировать файл `mytheme.py`, как минимум, сменив значение переменной `name` (с `name = "modern"` на `name = "mytheme"`).
  4. После проделанных действий тема должна стать доступной. Если это не так (например, если используется постоянно запущенный процесс МойнМойн), необходимо перезапустить HTTP-сервер.

  5. После этого можно начать редактировать файлы в каталоге статического содержимого темы.

Местонахождение каталога со статическими файлами зависит от настроек и установки вики:

Лучший способ изменить визуальное оформление вики — унаследоваться от одной из тем МойнМойн по умолчанию и изменить только необходимые сущности. Это поможет избежать работы по копированию новых стилей, добавленных во время разработки в изменённые таблицы стилей. Чтобы реализовать эту схему, достаточно использовать директиву CSS `@import` следующим образом:

   1 @import url("/moin_static190/modern/css/common.css");
   2 
   3 h1,h2,h3,h4,h5 {
   4     background-color: #88CCFF;
   5 }

В первой строке происходит импорт общих для разных способов представления (для экрана, для печати...) классов по умолчанию, распространяемых в составе дистрибутива МойнМойн. Возможно, необходимо поменять URL в соответствии с конфигурацией вики и/или версией МойнМойн.

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

За дополнительной информацией можно обратиться в вики css-discuss.

Красивая идея, позволяющая сделать CSS редактируемыми на вики, показана на вики esw.w3.org.

Параметры конфигурации вики

Параметр

Значение по умолчанию

Описание

`page_footer1`

`""`

HTML-разметка, которую необходимо поместить перед стандартным подвалом страницы.

`page_footer2`

`""`

HTML-разметка, которую необходимо поместить после стандартного подвала страницы.

`page_header1`

`""`

HTML-разметка, которую необходимо поместить перед стандартной шапкой страницы, но после открывающего тега `<body>`.

`page_header2`

`""`

HTML-разметка, которую необходимо поместить после стандартной шапки страницы (и открывающего тега `<body>`).

`stylesheets`

`[(media, csshref), ...]`

Список кортежей вида `(способ показа, ссылка CSS)` для вставки после CSS темы, но перед пользовательской.

`html_head`

`""`

Дополнительные теги в `<head>` для всех страниц.

`html_head_posts`

`robots: noindex,nofollow`

Дополнительные теги в `<head>` для страниц, возвращаемых в ответ на POST-запросы.

`html_head_index`

`robots: index,follow`

Дополнительные теги в `<head>` для немногочисленных индексных страниц.

`html_head_normal`

`robots: index,nofollow`

Дополнительные теги в `<head>` для большинства обычных страниц.

`html_head_queries`

`robots: noindex,nofollow`

Дополнительные теги в `<head>` для страниц, возвращаемых в ответ на GET/HEAD-запросы с указанным параметрами в URL (например, для страниц вызова действий).

Можно настроить внешний вид вики, задавая следующие параметры конфигурации (применимо только к стандартным стилям, для других стилей параметры могут отличаться):

  1. `<head>`

    • `config.html_head` добавляется в тег `<head>` для всех страниц

    • `config.html_head_index`, `config.html_head_normal`, `config.html_head_queries`, `config.html_head_posts` добавляются в зависимости от вида страницы (см. выше)
  2. `<body>`

    • Можно использовать фрагменты HTML-разметки для дополнения страниц, генерируемых МойнМойн (далее указаны возможности для стандартных тем, другие темы могут отличаться в плане конфигурации) — далее показана последовательность, в которой формируется страница

    • Шапка страницы:
      • `config.page_header1`
      • `config.logo_string` – можно использовать для задания собственного логотипа.
      • Форма поиска.
      • Имя пользователя (расположено на боковой панели в теме `rightsidebar`), имя ИнтерВики, заголовок страницы.

      • Последние посещённые страницы (page trail).
      • Панель иконок действий (используется только в теме `classic`).
      • `config.navi_bar` – список страниц, которые будут добавлены в шапку. Если значение равно «`None`», то панель навигации добавлена не будет. В теме `rightsidebar` список располагается на боковой панели.
      • Сообщение
      • `config.page_header2` (в теме `rightsidebar` эта разметка будет добавлена перед разметкой боковой панели и сообщением)
    • Содержимое страницы
    • Подвал:
      • Информация о странице
      • `config.page_footer1`
      • Панель редактирования (в теме `rightsidebar` она находится на боковой панели), форма поиска (только в теме `classic`), действия (только в теме `classic`)
      • `config.credits`
      • Информация о версии
      • `config.page_footer2`
  3. Пользователь вики может переопределять стили путём задания URL собственной CSS в настройках учётной записи — эта CSS будет загружена после CSS темы, что позволяет переопределить всё, что необходимо. Файл CSS должен быть в кодировке UTF-8 (ASCII также подходит, так как является подмножеством UTF-8).

`page_header1`, `page_header2`, `page_footer1` и `page_footer2` могут быть функциями от одного аргумента, которым передаётся параметр «`request`» (также необходимо принимать произвольные именованные аргументы для совместимости с будущими возможными изменениями).

Создание новой темы

При желании можно также создать новую тему. Лучший способ сделать это — скопировать существующую тему (например, `modern`). После чего необходимо переименовать скрипт и изменить параметр `name` в нём. Можно также написать некую логику на языке Python в рамках этой темы, создав новый пользовательский интерфейс. При обновлении МойнМойн новые темы не затрагиваются — они будут работать с новой версией либо сразу, либо после небольших изменений, связанных с изменениями в API. Для дополнительной информации см. MoinDev/ThemeDevelopment.


  1. В установке МойнМойн 1.9 по умолчанию доступны темы «`classic`», «`modern`», «`modernized`», «`modernized_cms`», «`rightsidebar`» (1)