Руководство проекта Wikimedia для TemplateStyles
TemplateStyles позволяет использовать пользовательские страницы CSS для стилизации контента без необходимости администратору интерфейса редактировать CSS для всего сайта. TemplateStyles делают более удобным для редакторов стилизацию шаблонов; например, тех шаблонов, для которых CSS для всего сайта для мобильного скина или другого скина (например, Timeless) в настоящее время негативно влияет на отображение шаблона.
Несмотря на название, TemplateStyles работает со всеми типами страниц, а не только с шаблонами.
Руководящие принципы
- Стиль должен применяться только к связанному выводу шаблона. Он также может применяться к высокорелевантному соседнему викитексту, где используется шаблон. (Например, существует много шаблонов таблиц, которые должны иметь TemplateStyles, которые полностью предоставлены в шаблонах, или которые могут предоставлять легенду для таблицы викитекста.) В противном случае было бы запутанно, если бы добавление шаблона к одной части страницы полностью или частично изменило отображение или стиль несвязанной части страницы.
- Страницы стилей должны быть связаны с определенным шаблоном или группой шаблонов и названы соответственно. Это позволяет легко идентифицировать и редактировать страницы стилей. В общем, это означает, что страница стилей должна быть подстраницей связанного шаблона, например: Template: myTemplate /styles.css или Template: myTemplate /styles- foo .css , но не Template:styles- foo .css или Template: foo .css .
- В целом следуйте соглашениям о кодировании MediaWiki для CSS. Некоторые особенности:
- Используйте селекторы, которые с большой вероятностью будут уникальными для используемого шаблона. Это снижает вероятность случайного возникновения конфликтующих правил CSS. Примеры: используйте . myTemplate -row вместо .row или . myTemplate tr вместо tr .
- Избегайте использования #id в соответствии с соглашениями. HTML-идентификаторы должны быть уникальными на странице. Шаблоны редко используются уникально, а те, которые изначально предназначены для одноразового использования на странице, часто впоследствии используются непредвиденными способами. Используйте классы вместо идентификаторов для стилизации.
- Избегайте использования !important в соответствии с соглашениями, за исключением мобильных представлений для переопределения ввода стиля из связанного шаблона. Использование
!important
в TemplateStyles исключительно трудно переопределить из-за порядка загрузки стилей (персональный CSS, затем TemplateStyles).
- В шаблонах, которые предполагается заменить или которые могут быть заменены, используйте {{ ifsubst }} для удаления тега TemplateStyles. Пример: {{ allcaps }} .
- Встроенные стили могут использоваться как случай "if substed" в замещенном шаблоне. Пример: {{ smallcaps }} .
- Изображения, не требующие указания авторства (т. е. находящиеся в общественном достоянии), являются единственными изображениями, которые могут использоваться в качестве фоновых изображений. Для обычного использования файла указание авторства предоставляется на странице описания файла, доступ к которой осуществляется путем нажатия на изображение. Это невозможно, если изображение используется в качестве фона.
- Уровень защиты страниц стилей должен соответствовать уровню защиты соответствующего шаблона. Если шаблон имеет высокий риск , то его стили также имеют высокий риск и должны иметь такую же защиту. Если шаблон не имеет высокого риска, то вандализм, вызывающий хаос, может быть достигнут просто путем редактирования самого шаблона. Более высокий уровень защиты для страницы стилей побудит редакторов добавлять встроенные стили в шаблон, поскольку шаблон будет доступен для редактирования, а страница стилей — нет. Любые шаблоны, использующие страницы CSS с неправильным уровнем защиты, будут отнесены к категории Category:Templates using TemplateStyles с другим уровнем защиты .
- Не забудьте добавить
/* {{pp-template}} */
ко всем защищенным страницам CSS, чтобы убедиться, что они отображают соответствующий значок замка. Защищенные шаблоны, использующие страницы CSS, на которых отсутствует значок замка, будут отнесены к категории: Шаблоны, использующие стили шаблонов без замков .
Обратите внимание, что Руководство по стилю , включая рекомендации по доступности , по-прежнему действует.
Рабочий процесс для преобразования
- В Template: myTemplate определите все встроенные стили, которые можно перенести в отдельную таблицу стилей.
- Создайте шаблон: myTemplate /styles.css, содержащий все классы, которые заменят встроенные стили. Используйте специфичные для шаблона имена классов, где это возможно.
- В Template: myTemplate (или его Template: myTemplate /sandbox , если вы хотите сначала протестировать), добавьте (вам не нужно указывать пространство имен Template:). Вероятно, лучше всего это сделать вверху, чтобы это было очевидно и чтобы избежать появления нестилизованного контента , но это должно быть на отдельной строке, если шаблон начинается с вики-разметки, которая должна начинаться с новой строки (например, wiki-table).
<templatestyles src="myTemplate/styles.css" />
- Измените шаблон (или песочницу), заменив встроенные стили классами, которые вы определили в шаблоне: myTemplate /styles.css
- Сделайте как можно больше проверок. Если вы тестировали в песочнице, вы можете проверить страницу тестовых случаев, где она есть, но особенно проверьте, что затронутые вами стили отображаются правильно.
- В частности, для шаблонов, предназначенных для использования в строке, проверьте, нет ли использования внутри ссылок. Шаблоны TemplateStyles не будут работать внутри ссылок (сейчас).
- Если вы использовали песочницу, либо отправьте запрос на редактирование основного шаблона, либо выполните обновление, если вы уверены в своих изменениях.
- При необходимости запросите или измените уровень защиты Template: myTemplate /styles.css , чтобы он соответствовал уровню защиты Template: myTemplate .
- Добавьте в документацию шаблона информацию о том, какие таблицы стилей TemplateStyles он использует.
{{Uses TemplateStyles}}
Советы
- Использование таблиц стилей TemplateStyles регистрируется так же, как включение шаблонов и вызов модуля Scribunto. Special:WhatLinksHere и раздел «Шаблоны, используемые в этом предварительном просмотре» под формой редактирования будут работать для них обычным образом.
- Для поиска таблиц стилей TemplateStyles можно выполнить поиск по contentmodel:sanitized-css . См. также mw:Help:CirrusSearch#Contentmodel.
- При размещении в документации шаблона он добавляет шаблон в Category:Templates с использованием TemplateStyles . Если таблица стилей TemplateStyles имеет более низкий уровень защиты, шаблон будет отслеживаться в Category:Templates с использованием TemplateStyles с другим уровнем защиты (1 страница).
{{Uses TemplateStyles}}
- Эксперименты TemplateStyles можно создавать в песочнице Template:TemplateStyles , например, для использования в экспериментах модуля Module:Sandbox .
- Страницы TemplateStyles можно создавать вне пространств имен шаблонов или модулей, либо сначала создав их в пространстве имен шаблонов и переместив их (возможно, в песочницу Template:TemplateStyles ), либо используя Special:ChangeContentModel в качестве администратора и редактора шаблонов. Независимо от используемого метода, создание страницы .css в пользовательском пространстве может выполнять только соответствующий пользователь или администратор интерфейса, но после ее создания ее может редактировать любой.
- Перемещение очищенной страницы CSS не приведет к перенаправлению.
Переопределение стилей шаблона
Из-за способа реализации TemplateStyles переопределение TemplateStyles в вашем персональном CSS требует немного больше усилий, чем обычно. Правила на определенном листе TemplateStyles не являются полными правилами CSS, и вы не можете сопоставить селекторы, чтобы переопределить их.
- Каждый селектор «поднимается» на
.mw-parser-output
, поэтому для переопределения правила в таблице TemplateStyles, которое выглядит как .documentation {}
, простое переопределение в вашем персональном CSS-файле должно выглядеть как .mw-parser-output .documentation {}
. - Однако в HTML каждый стиль TemplateStyles всегда размещается после загрузки вашего персонального CSS-файла. Соответственно, новое правило должно быть более конкретным . Это может быть реализовано несколькими способами. Самый простой — выбрать элемент HTML также как в:
.mw-parser-output div.documentation {}
. Другой способ — удвоить один из селекторов классов, как в .mw-parser-output.mw-parser-output .documentation {}
или .mw-parser-output .documentation.documentation {}
. Этот последний способ немного более перспективен, но выглядит немного страннее. - Наконец,
!important
всегда можно переопределить стили в вашем личном CSS. Обычные предостережения относительно !important
применения. Предпочтите один из двух вариантов в пункте два, если это возможно. (Вы должны сделать это, чтобы переопределить встроенные стили, независимо от любого из вышеперечисленного; некоторые шаблоны не могут переместить все в TemplateStyles из-за гибкости, предоставленной пользователям шаблонов. Разработчики шаблонов должны учитывать, действительно ли необходимы такие параметры, как style
и width
. См. также phab:T200632.)
Примеры
- mw:Справка:Стили шаблонов/примеры
- mw:Шаблон:Стильный (CSS)
- mw:Шаблон:ResponsiveAmboxПример (CSS)
- Template:Thermometer и Template:Thermometer/styles.css дают простую демонстрацию того, как TemplateStyles можно смешивать со встроенными стилями (где передается параметр для изменения одного или нескольких стилей)
Смотрите также
Внешние ссылки
- mw:Расширение:Стили шаблона
- mw:Справка:Стили шаблонов