## Please edit system and help pages ONLY in the master wiki! ## For more information, please see MoinMoin:MoinDev/Translation. ##master-page:HelpOnThemes ##master-date:2010-05-14T19:11:19Z #acl -All:write Default #format wiki #language ru = Темы = <> МойнМойн использует систему подключаемых тем, которая позволяет гибко настраивать внешний вид и поведение без изменения основного кода сервера. Пользователь может выбирать используемую тему из списка предустановленных<> в своих настройках (это может быть недоступно в случае, если администратор принудительно указал определённую тему и запретил возможность её смены). == Установка тем == Различные дополнительные темы доступны в [[MoinMoin:ThemeMarket|репозитории тем]], откуда их можно скачать в виде архивов. Перед скачиванием необходимо удостовериться, что тема совместима с используемой версией МойнМойн. Обычно для установки темы недостаточно просто скопировать содержимое архива в каталог `themes`. Для установки настоятельно рекомендуется следовать инструкциям, указанным автором темы. Обычно, затрагиваются два места: 1. Каталог, где хранятся статические файлы темы. * Сюда следует поместить каталог с файлами темы (содержащий подкаталоги `css/`, `img/` и, возможно, некоторые другие). 1. Каталог `data/plugin/theme`, где хранятся исполняемые части тем. * Сюда следует поместить скрипт (он имеет то же имя, что и тема и расширение «`.py`»). После выполнения указанных действий тема должна быть доступна для использования. Возможно, для того, чтобы она появилась в списке доступных тем потребуется очистить кэш или повторно войти в вики. Для опций конфигурации см. КакНастраивать. == Изменение тем == Можно свободно изменять предустановленные темы, но лучше использовать копию. Для её создания необходимо выполнить следующее (здесь в качестве примера используется тема `modern`): 1. Создать копию каталога `modern` в каталоге со статическим содержимым и назвать её, например, `mytheme`. 1. Скопировать скрипт темы `MoinMoin/theme/modern.py` в `data/plugins/theme/mytheme.py`. 1. Отредактировать файл `mytheme.py`, как минимум, сменив значение переменной `name` (с `name = "modern"` на `name = "mytheme"`). 1. После проделанных действий тема должна стать доступной. Если это не так (например, если используется постоянно запущенный процесс МойнМойн), необходимо перезапустить HTTP-сервер. 1. После этого можно начать редактировать файлы в каталоге статического содержимого темы. Местонахождение каталога со статическими файлами зависит от настроек и установки вики: * Если адресный префикс, указанный в параметре `url_prefix_static`, обрабатывается HTTP-сервером, то местонахождение можно узнать из его конфигурации (обычно, он отображён в каталог в файловой системе с помощью директивы `Alias` или аналогичной) * Если же префикс, указанный в параметре `url_prefix_static`, обрабатывается МойнМойн с использованием встроенного сервера статических файлов, то необходимо проверить место, в коде, где создаётся WSGI-сервер: * «`shared=True`» означает, что используются статические файлы из `MoinMoin/web/static/htdocs/`. * «`shared=False`» означает, что используются статические файлы из специально указанного каталога. Лучший способ изменить визуальное оформление вики — унаследоваться от одной из тем МойнМойн по умолчанию и изменить только необходимые сущности. Это поможет избежать работы по копированию новых стилей, добавленных во время разработки в изменённые таблицы стилей. Чтобы реализовать эту схему, достаточно использовать директиву CSS `@import` следующим образом: {{{#!highlight css @import url("/moin_static190/modern/css/common.css"); h1,h2,h3,h4,h5 { background-color: #88CCFF; } }}} В первой строке происходит импортирование общих для разных способов представления (для экрана, для печати...) классов по умолчанию, распространяемых в составе дистрибутива МойнМойн. Возможно, необходимо поменять URL в соответствии с конфигурацией вики и/или версией МойнМойн. В последующих строках происходит непосредственно задание собственных стилей, конкретно изменение цвета фона заголовков. Вот и всё. За дополнительной информацией можно обратиться в вики [[http://css-discuss.incutio.com/|css-discuss]]. Красивая идея, позволяющая сделать CSS ''редактируемыми на вики'', показана на вики [[http://esw.w3.org/topic/plain.css|esw.w3.org]]. == Параметры конфигурации вики == || '''Параметр''' || '''Значение по умолчанию''' || '''Описание''' || || `page_footer1` || `""` || HTML-разметка, которую необходимо поместить ''перед'' стандартным подвалом страницы. || || `page_footer2` || `""` || HTML-разметка, которую необходимо поместить ''после'' стандартного подвала страницы. || || `page_header1` || `""` || HTML-разметка, которую необходимо поместить ''перед'' стандартной шапкой страницы, но после открывающего тега ``. || || `page_header2` || `""` || HTML-разметка, которую необходимо поместить ''после'' стандартной шапки страницы (и открывающего тега ``). || || `stylesheets` || `[(media, csshref), ...]` || Список кортежей вида `(способ показа, ссылка CSS)` для вставки после CSS темы, но перед пользовательской. || || `html_head` || `""` || Дополнительные теги в `` для всех страниц. || || `html_head_posts` || `robots: noindex,nofollow` || Дополнительные теги в `` для страниц, возвращаемых в ответ на POST-запросы. || || `html_head_index` || `robots: index,follow` || Дополнительные теги в `` для немногочисленных индексных страниц. || || `html_head_normal` || `robots: index,nofollow` || Дополнительные теги в `` для большинства обычных страниц. || || `html_head_queries` || `robots: noindex,nofollow` || Дополнительные теги в `` для страниц, возвращаемых в ответ на GET/HEAD-запросы с указанным параметрами в URL (например, для страниц вызова действий). || Можно настроить внешний вид вики, задавая следующие параметры конфигурации (применимо только к стандартным стилям, для других стилей параметры могут отличаться): 1. `` * `config.html_head` добавляется в тег `` для ''всех'' страниц * `config.html_head_index`, `config.html_head_normal`, `config.html_head_queries`, `config.html_head_posts` добавляются в зависимости от вида страницы (см. выше) 1. `` . Можно использовать фрагменты 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` 1. Пользователь вики может переопределять стили путём задания URL собственной CSS в настройках учётной записи — эта CSS будет загружена после CSS темы, что позволяет переопределить всё, что необходимо. Файл CSS должен быть в кодировке UTF-8 (ASCII также подходит, так как является подмножеством UTF-8). `page_header1`, `page_header2`, `page_footer1` и `page_footer2` могут быть функциями от одного аргумента, которым передаётся параметр «`request`» (также необходимо принимать произвольные именованные аргументы для совместимости с будущими возможными изменениями). == Создание новой темы == При желании можно также создать новую тему. Лучший способ сделать это — скопировать существующую тему (например, `modern`). После чего необходимо переименовать скрипт и изменить параметр `name` в нём. Можно также написать некую логику на языке Python в рамках этой темы, создав новый пользовательский интерфейс. При обновлении МойнМойн новые темы не затрагиваются — они будут работать с новой версией либо сразу, либо после небольших изменений, связанных с изменениями в API. Для дополнительной информации см. MoinMoin:MoinDev/ThemeDevelopment. ----