Техническое руководство по викиразметке

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

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

Если вы искали руководство для начинающего автора, вам гораздо лучше подойдёт страница «Оформление».

Содержание

Вступление

Разметка делится на четыре типа:

  • Автозамена выполняется перед началом обработки статьи. Таким образом, автозамена позволяет добавлять в статью новый код, который позже будет обработан как синтаксис. Подробнее об этом — в секции про [[include]].
  • Разбиение на параграфы происходит автоматически по заданным правилам.
  • Свободный синтаксис не оформлен строгим образом; каждый элемент разметки может определяться абсолютно непредсказуемым образом. Эти элементы не всегда сочетаются друг с другом и с блочными элементами.
  • Блочные элементы оформлены по строгим правилам; для них используется формат, внешне сходный с HTML-разметкой или BBCode. Блочные элементы имеют название, атрибуты, модификаторы. Те блочные элементы, которые в принципе могут содержать другие элементы, не имеют ограничений по их типу (включая другие блочные элементы).

Автозамена

[[include]]: Вставка кода из другой статьи

Синтаксис:

[[include название_статьи параметр1 = значение1 | параметр2 = значение2]]

Для корректной работы этого элемента, перед открывающим [[ не должно быть никакого текста с начала строки (включая пробелы). Также, никакого текста не должно быть после закрывающего ]].

Элемент [[include]], как и отдельные параметры внутри него, может занимать несколько строк.

При использовании этого элемента система обращается к указанной статье сайта, получает её исходный код, и вставляет этот исходный код на том месте, где был использован [[include]].

Перед вставкой происходит автозамена любых переменных внутри указанной статьи. Так, переменная вида {$параметр1} будет заменена на значение этого параметра, указанное в элементе.

Поскольку вставка исходного кода происходит на уровне строк, а не на уровне элементов, в указанной для встраивания статье может содержаться как полный, так и частичный исходный код. Также полный либо частичный исходный код может содержаться в параметрах к [[include]].

Пример:

  • Код в статье page1:

    {$param}

  • Код в статье, использующей [[include]]:

    [[include page1 param=[[div class="code"]] ]]
    text
    [[include page1 param=[[/div]] ]]

  • Результат:

    [[div class="code"]]
    text
    [[/div]]

[[noinclude]]: Игнорирование части кода статьи при вставке в другую страницу

Синтаксис:

[[noinclude]]
…любой текст…
[[/noinclude]]

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

Для того, чтобы предотвратить включение подобных визуальных элементов в авторские статьи, можно воспользоваться тэгом [[noinclude]].

Как открывающий, так и закрывающий тэг [[noinclude]] должны быть единственными на своей строке, в противном случае тэг не сработает. Это сделано, чтобы уменьшить вероятность некорректных и ложных срабатываний, например, при документации самого функционала.

Шаблоны категорий

Шаблон категории — это скрытая статья вида component:_template. Для основной категории статья называется просто _template.

Если для какой-либо категории (например, в данном случае, component) указан шаблон, то он будет отрисовываться для всех статей этой категории вместо актуального кода статьи. При этом, в шаблоне поддерживаются все переменные, используемые в модуле ListPages. Таким образом, например, возможно получить код изначальной статьи через %%content%%.

%%path%%, %%path_expr%%, %%path_url%%: Параметры страницы

Движок сайта поддерживает передачу параметров в адресе страницы через синтаксис вида /параметр/значение.

Так, например, чтобы получить в статье page1 доступ к параметрам %%param%% и %%param2%%, вы можете открыть её по адресу наподобие такого:

https://scpfoundation.net/page1/param/example1/param2/example2.

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

  • %%path|param%% напрямую вставляет в код статьи значение переменной, либо текст %%path|param%%, если переменная не указана.
  • %%path_expr|param%% вставляет в код статьи значение переменной в формате JSON-строки, либо текст "%%path_expr|param%%". Это позволяет передавать сложные значения, включающие в себя специальные символы, в атрибуты блочных элементов (например, [[input type="text" value=%%path_expr|param%%]] гарантирует, что значение будет корректно указано, даже если пользователь использует спецсимволы).
  • %%path_url|param%% вставляет в код статьи значение переменной, закодированное в формате URL, либо текст %25%25path_url%7Cparam%25%25. Это позволяет передавать значения, используемые для передачи в ссылках либо в параметрах другой статье (например, с [[module Redirect to="/other_page/param/%%path_url|param%%"]]).

Автозамена типографских символов

  • `текст' — заменяется на ‘текст’.
  • ``текст'' — заменяется на “текст”.
  • ,,текст'' — заменяется на „текст”.
  • ..., . . . — заменяются на символ "…".

Важно, что поскольку подстановка этих символов происходит на этапе автозамены, она может случиться на нескольких строках и в том числе в литералах, [[code]], [[module]] и т.п.; будьте бдительны.

Разбиение на параграфы

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

  • Строчный элемент. К таким относится простой текст, все элементы форматирования текста, а также [[span]] и ряд других, наподобие [[image]] или [[user]]. Приблизительно, вы можете ожидать, что элемент будет строчным, если он отображается по умолчанию как display: inline или display: inline-block.
  • Полноширинный элемент. К таким относятся такие элементы, как заголовки, разделители, списки, [[toc]], [[div]], [[blockquote]], [[footnoteblock]], [[collapsible]] и ряд других. Приблизительно соответствует display: block.

Несмотря на то, что выше приводится соответствие свойству CSS, фактическое значение этого свойства на параграфы не влияет, поскольку разделение на категории элементов происходит во время их первичного превращения из разметки в HTML.

Параграфы создаются:

  • В полноширинных блочных элементах, если для них не указан модификатор _ (например, [[div_]]).
    Указание данного модификатора возможно не для всех блочных элементов, подробнее — в описании каждого из них.
  • В простом блоке цитирования (>).

Параграфы не создаются:

  • В любых строчных элементах.
  • В блочных таблицах ([[table]]).
  • В большинстве элементов свободного синтаксиса, кроме >.
    Это ограничение можно обойти, окружив требуемый текст в элемент [[div]] либо [[p]], например:
    || [[div]]строка1
    
    строка2[[/div]] || следующая ячейка таблицы ||
    В указанном примере содержимое [[div]] будет обёрнуто в параграфы, в то время как следующая ячейка таблицы будет добавлена напрямую как текст.
    Данный приём можно также использовать для блочных таблиц.

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

  • Строка должна быть первой в элементе, либо над ней должна быть минимум одна полностью пустая строка, либо над ней должен находиться полноширинный элемент.
  • Строка должна содержать только строчные элементы. Параграфы вокруг полноширинных элементов не создаются. Вставка полноширинного элемента внутри параграфа прерывает текущий параграф в этом месте и создаёт новый параграф после полноширинного элемента.

В случае наличия текста в элементе, в котором не создаются параграфы (по любому из условий выше), пустые строки в тексте будут трактоваться как обычные новые строки (<br>, а не <p>).

Управление новой строкой

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

  • Поставить на этой строке любой визуально пустой элемент (который, тем не менее, не будет считаться пустым с точки зрения создания параграфов). Это относится к чему-то вроде [[span]][[/span]], @@@@, @<>@.
  • Поставить в конце этой строки символ _. Данный символ однозначно трактуется как новая строка и никогда не превращается в параграф.

Также вы можете предотвратить переход на новую строку (и создание параграфов), даже если ваш код разбит на строки. Это может быть важно при написании сложного кода, чтобы сохранить читаемость, не деля при этом визуально текст на строки. Для этого в конце строки добавьте \, после чего следующая строка будет "приклеена" к текущей. Например, следующий код при вставке в статью будет визуально отображаться как одна строка "abc":

a\
[[span class="some-class"]]\
b\
[[/span]]\
c

Свободный синтаксис

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

  • **текст**полужирный текст.
  • //текст//наклонный текст.
  • {{текст}} — моноширинный текст.
  • --текст--зачёркнутый текст.
  • ^^текст^^надстрочный текст.
  • ,,текст,,подстрочный текст.
  • __текст__подчёркнутый текст.

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

  • Между элементом и текстом внутри не должно быть пробелов (так, __ текст __ не является корректным синтаксисом).
  • Элемент может занимать несколько строк, но не может занимать несколько параграфов.
    Корректно:
    //a
    b
    c//
    Некорректно:
    //a
    
    b
    
    c//
  • Элемент может содержать внутри себя любые другие элементы, включая блочные. В случае использования блочных элементов, ограничение на параграфы снимается. Пример:
    //[[div]]a
    
    b
    
    c[[/div]]//

Также поддерживается окрашивание текста:

  • ##цвет|текст##окрашенный текст.
    В качестве цвета может использоваться любой цвет, поддерживаемый CSS, например, выражение вида ##rgba(255, 127, 0, 0.5)|текст## является корректным. При выражении цвета через шестнадцатиричное значение (RRGGBB, RRGGBBAA, RGB, RGBA) не обязательно использовать дополнительный символ # (например: ##ffe|текст## — то же самое, что и ###ffe|текст##).

Ссылки

  • [адрес текст] или [*адрес текст] — обычная ссылка. Чаще всего используется для внешних ссылок, либо для ссылок между статьями сайта с использованием параметров, либо для ссылок на якоря (например, [#toc-0 ссылка на первый заголовок].
    Адрес не может содержать пробелы, в то время как название — может. В названии не допускается несколько строк.
    В случае, если ссылка начинается с звёздочки *, она будет открыта в новом окне (вкладке).

  • [[[статья]]] или [[[статья|]]] или [[[статья|текст ссылки]]] — внутренняя ссылка на другую статью на сайте с использованием её полного идентификатора (адреса). Такие ссылки указываются в обратных ссылках статьи, а также подсвечиваются другим цветом в том случае, если указанной статьи не существует.

    Варианты синтаксиса:

    • [[[category:page1]]] — создаёт ссылку на статью category:page1 с текстом, приблизительно соответствующим идентификатору статьи (символы - будут заменены на пробелы, категория удалена, и т.п.).

    • [[[category:page1|]]] — создаёт ссылку на статью category:page1. В случае, если эта статья существует, её название будет автоматически использовано для текста ссылки, в противном случае будет использован её идентификатор.

    • [[[category:page1|текст]]] создаёт ссылку на статью category:page1, с текстом, указанным в элементе. В названии ссылки также не допускается несколько строк.

  • Автоматические ссылки: текст формата http://…, ftp://…, будет автоматически превращён в соответствующие ссылки. Такая подстановка может вызывать проблемы и ломать другой синтаксис. Чтобы избежать этого, вы можете использовать литералы.

Управление положением элементов

  • = текст — центрирование параграфа. Требуется использовать только в начале параграфа, после чего весь параграф будет выровнен по центру, включая следующие строки.
  • _ — явная новая строка. Используется только в конце строки. Позволяет, например, предотвратить формирование параграфа из двух пустых строк подряд, как в примере ниже:
    a
    _
    _
    b
    Также, элемент _ позволяет использовать новую строку в элементах, которые в противном случае не поддерживают добавление новых строк (например, в таблицах или списках).
    Для корректной работы явная новая строка должна отделяться от предшествующего текста или элементов пробелом.
  • ~~~, ~~~<, ~~~> — сброс положения плавающих элементов. Имеет смысл только в начале строки. То же самое, что и [[div style="clear: both"]][/div]], [[div style="clear: left"]][[/div]] и [[div style="clear: right"]][[/div]], соответственно.

Заголовки

+ текст, ++ текст, +++ текст, ++++ текст, +++++ текст, ++++++ текст — заголовки от первого до шестого уровня соответственно.

Заголовки дальше шестого уровня не поддерживаются.

Элемент может использоваться только на новой строке. Внутри не поддерживаются новые строки, но можно встроить блочный элемент или явную новую строку, например:

++ первая строка _
вторая строка

Перед текстом заголовка может быть добавлен символ *, например, ++* текст. В таком случае заголовок не будет добавлен в оглавление.

Горизонтальная линия

--- — добавляет горизонтальную черту.

Элемент может использоваться только на новой строке. Количество символов - после первых трёх ничем не ограничено.

Цитаты

Следующий синтаксис создаёт два вложенных друг в друга блока цитирования:

> уровень 1
>> уровень 2
>> вторая строка уровня 2
> снова уровень 1

Использование данного элемента не рекомендуется в пользу [[blockquote]] в связи с лучшей читаемостью (и редактируемостью) последнего.

Списки

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

Пример нумерованного списка, вложенного в ненумерованный:

* элемент1
* элемент2
 # элемент2.1
 # элемент2.2
* элемент3

Уровень вложенности списка определяется количеством пробелов или табуляций перед * или #.

В пунктах списка возможно использование нескольких строк с использованием символа _ либо заключения содержимого в [[span]], например:

* элемент1 _
на следующей строке
* [[span]]элемент2
на следующей строке[[/span]]

Словари определяются следующим образом:

: термин1 : значение
: термин2 : значение
: термин3 : значение

В терминах и значениях словаря также допустимо использование _ или [[span]].

Таблицы

Упрощённый (свободный) синтаксис таблиц выглядит следующим образом:

||~ заголовок ||~ заголовок2 ||
||> текст, выравниваемый по правой стороне ||= текст, выравниваемый по центру ||
|||| ячейка, занимающая сразу два столбца по горизонтали ||

Для добавления текста из нескольких строк в ячейку можно использовать _ или [[span]].

Данный элемент не может создавать ячейки, занимающие несколько строк по высоте. Для подобных случаев можно использовать блочный элемент [[table]], не имеющий таких ограничений.

Прочее

  • [[# anchor]] — создаёт элемент с указанным идентификатором, что позволяет впоследствии перейти к нему ссылкой (например, [#anchor перейти к якорю]). Данный элемент визуально похож на блочный, но на самом деле им не является. Пробел после # в определении элемента — обязателен.
  • [!-- комментарий --] — ограничивает область исходного кода, которая не будет показываться при просмотре готовой страницы. Это можно использовать для того, чтобы оставить в коде какие-либо примечания технического характера.
  • @@текст@@ — предотвращает обработку текста внутри символов @@ как разметки. Всегда создаёт строку (литерал). Позволяет избежать двусмысленности в случае использования символов разметки для визуального эффекта (например, одинарных квадратных скобок, не являющихся ссылкой). Может использоваться для разрушения синтаксиса автозамены, если автозамена нежелательна (например, %%pat@@h|param%% всегда будет выглядеть как текст %%path|param%%, даже если указать параметр param). Может использоваться для создания пустых строк тем же способом, что и _ (однако, такое использование нежелательно).
  • @<&mdash;&copy;>@ — вставляет указанный HTML-символ (или несколько символов).
  • Подстановка символов «, » и —

    Поскольку данные подстановки не являются автозаменами, они не работают в ситуациях, где поддерживается только обычный текст (например, в атрибутах блоков или названиях ссылок).
    • << — левая кавычка: «
    • >> — правая кавычка: »
    • -- — тире: —
      Важно иметь в виду, что для обработки данного элемента именно как тире, а не зачёркнутого текста, вокруг него обязательно должны быть пробелы.

Блочные элементы

Все блочные элементы составляются по схожим правилам.

Так, каждый блочный элемент имеет название (например, div, iftags, blockquote…), опциональный идентификатор, и открывающий тег (например, [[div]]. Блочные элементы, которые могут содержать в себе текст или другие блочные элементы, также имеют закрывающий тег ([[/div]]), соответствующий по названию открывающему.

Некоторые блоки могут иметь модификатор _. Данный модификатор ставится после названия блока и используется для предотвращения создания параграфов в блоке (текст будет помещён в блок напрямую, а новые строки будут реализовываться через <br>).
Модификаторы блока ставятся только на открывающем блоке, т.о. данный синтаксис является корректным:

[[div_]]text[[/div]]

Идентификатор блока — опциональный текст после названия блока (но перед модификатором _), указываемый после :. Пример:

[[module:lu ListUsers]]
  [[module CSS]]
    body {
      background: url(%%avatar%%);
    }
  [[/module]]
[[/module:lu]]

Идентификатор блока позволяет использовать внутри блока, принимающего текстовое значение (как [[code]], [[module]], [[html]]) стандартный закрывающий тег этого блока, не закрывая его. Таким образом, можно вложить несколько модулей друг в друга, или написать пример [[code]] внутри этого блока:

[[code:2]]
  [[code:b]]
    пример использования блока [[cоde]]
  [[/code:b]]
[[/code:2]]

Большая часть блоков может принимать атрибуты в какой-либо форме (либо HTML, либо собственные атрибуты конкретных блоков). Атрибуты указываются в форме параметр=значение либо параметр="значение". В отличие от HTML, для использования специальных символов внутри значения атрибута используются не HTML-символы (например, &quot;), а экранирование через \ ([[collapsible show="Протокол \"Тоска\""]]).

Стандартные атрибуты HTML

Некоторые элементы (такие как [[a]], [[span]] и другие) являются прямым интерфейсом к HTML, а их атрибуты из разметки напрямую вставляются в создаваемую HTML-страницу.

Не все атрибуты, существующие в HTML, разрешены к использованию в разметке. Список разрешённых атрибутов приведен ниже; для подробностей посетите документацию по HTML. Наиболее часто используемые в контексте сайта атрибуты подсвечены красным.

  • alt
  • class
  • colspan
  • href
  • id: Данный атрибут обрабатывается специальным образом. Идентификатор должен начинаться с префикса u-. Если префикс не указан, система добавляет его автоматически, так, id="myid" будет превращён в id="u-myid".
  • rowspan
  • style
  • target
  • accept
  • align
  • autocapitalize
  • autoplay
  • background
  • bgcolor
  • border
  • buffered
  • checked
  • cite
  • cols
  • contenteditable
  • controls
  • coords
  • datetime
  • decoding
  • default
  • dir
  • dirname
  • disabled
  • download
  • draggable
  • for
  • form
  • headers
  • height
  • hidden
  • high
  • hreflang
  • inputmode
  • ismap
  • itemprop
  • kind
  • label
  • lang
  • list
  • loop
  • low
  • max
  • maxlength
  • min
  • minlength
  • multiple
  • muted
  • name
  • optimum
  • pattern
  • placeholder
  • poster
  • preload
  • readonly
  • required
  • reversed
  • role
  • rows
  • scope
  • selected
  • shape
  • size
  • sizes
  • span
  • spellcheck
  • src
  • srclang
  • srcset
  • start
  • step
  • tabindex
  • title
  • translate
  • type
  • usemap
  • value
  • width
  • wrap
  • scrolling
  • frameborder

Булевы атрибуты

Атрибуты, далее отмеченные в документации как принимающие булево значение, на практике могут выражаться следующими строками:

True:

  • true
  • t
  • 1
  • yes

False:

  • false
  • f
  • 0
  • no

То же самое относится к следующим встроенным атрибутам HTML:

  • allowfullscreen
  • allowpaymentrequest
  • async
  • autofocus
  • autoplay
  • checked
  • controls
  • default
  • disabled
  • formnovalidate
  • hidden
  • ismap
  • itemscope
  • loop
  • multiple
  • muted
  • nomodule
  • novalidate
  • open
  • playsinline
  • readonly
  • required
  • reversed
  • selected
  • truespeed

[[<]], [[>]], [[=]], [[==]]: Выравнивание

Тип
Полноширинный
Параграфы
Поддерживает атрибуты
  • [[<]] — выравнивает текст внутри по левой стороне.
  • [[>]] — выравнивает текст внутри по правой стороне.
  • [[=]] — выравнивает текст внутри по центру.
  • [[==]] — выравнивает текст внутри по левой и правой сторонам.

[[a]]: Ссылка

Тип
Строчный
Альтернативные названия
[[anchor]]
Поддерживает атрибуты HTML
Поддерживает *
Поддерживает _

Использование модификатора * (например, [[*a href="https://google.com"]]Google[[/a]]) аналогично использованию target="_blank"; такая ссылка будет открыта в новом окне (вкладке). При использовании данного модификатора одновременно с target значения будут добавлены друг к другу.

Ссылки через этот элемент подвергаются стандартной фильтрации.

[[blockquote]]: Блок цитирования

Тип
Полноширинный
Параграфы
Альтернативные названия
[[quote]]
Поддерживает атрибуты HTML

Функционально аналогичен использованию >, но является более "чистым" и читаемым с точки зрения разметки.

[[b]]: Полужирный текст

Тип
Строчный
Альтернативные названия
[[bold]], [[strong]]
Поддерживает атрибуты HTML

[[char]]: HTML-символ

Тип
Строчный
Альтернативные названия
[[character]]
Поддерживает атрибуты

Вставляет в текст HTML-символ. Работает почти так же, как и синтаксис @<>@.

Пример использования: [[char &mdash;]]

[[code]]: Блок кода

Тип
Полноширинный
Параграфы
Поддерживает атрибуты

Позволяет игнорировать правила разметки между открывающим [[code]] и закрывающим [[/code]]. Данный элемент в основном используется для создания примеров разметки без её немедленной обработки.

[[collapsible]]: Раскрываемые секции (спойлеры)

Тип
Полноширинный
Параграфы
Поддерживает атрибуты HTML

Создаёт блок, который можно раскрыть или закрыть нажатием по кнопке.

Поддерживаемые атрибуты, помимо атрибутов HTML:

  • show — текст на кнопке, показываемый в то время, когда секция закрыта.
  • hide — текст на кнопке, показываемый в то время, когда секция открыта.
  • align — выравнивание текста на кнопке. Может принимать значения left, right, center и justify.
  • folded — указывает, должна ли секция быть открытой с самого начала. Булево значение.
  • hideLocation — указывает, где необходимо отображать кнопку для закрытия секции после её раскрытия. Может принимать значения top, bottom, both, neither, none. Последние два варианта взаимозаменяемы и обозначают одно и то же.

[[date]]: Дата

Тип
Строчный
Поддерживает атрибуты HTML

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

Используется специальный синтаксис атрибутов; дата передаётся сразу после открытия блока без выделения в отдельный атрибут:

[[date 2024-02-18T00:00:00Z format="%H:%M:%S %d.%m.%Y"]]

Так, дата в примере указана в UTC, но на компьютере с часовым поясом UTC+0200 она отобразится как "02:00:00 18.02.2024".

[[div]]: Полноширинный универсальный контейнер

Тип
Полноширинный
Параграфы
Поддерживает атрибуты HTML
Поддерживает _

[[footnote]]: Сноска

Тип
Строчный
Поддерживает атрибуты

Добавляет в текст нумерованную сноску, текст которой будет отображаться в конце страницы (по умолчанию) или на месте [[footnoteblock]] (если указано вручную).

[[footnoteblock]]: Блок сносок

Тип
Полноширинный
Поддерживает атрибуты HTML

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

Поддерживает следующие атрибуты:

  • title — текст (заголовок), отображаемый над списком сносок.
  • hideбулево значение. Если указано, то данный блок сносок не будет отображаться.
    Этот атрибут можно использовать для того, чтобы убрать стандартный блок сносок, который будет добавлен на страницу автоматически, если нужно, чтобы сноски отображались только во всплывающих подсказках.

[[form]]: Форма ввода

Тип
Полноширинный
Параграфы
Поддерживает атрибуты HTML
Поддерживает _

Позволяет заполнить форму и отправить её на определённый адрес страницы сайта с помощью URL-параметров.

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

Пример использования:

[[form target="search"]]
  [[input type="text" name="s"]]
  [[input type="submit"]]
[[/form]]

Здесь, после нажатия на кнопку "Отправить", произойдёт переход к статье search с указанным параметром. Например:

https://scpfoundation.net/search/s/ваша_строка.

После этого параметр можно прочитать в целевой статье с помощью функционала %%path%%.

[[html]]: HTML-код

Тип
Полноширинный
Параграфы
Поддерживает атрибуты

Позволяет вставить произвольный HTML-код, автоматически оборачиваемый системой в [[iframe]]. Созданный таким образом фрейм будет автоматически подстраиваться под размер своего содержимого.

В текущей версии сайта данный элемент реализован через <iframe srcdoc="…">. У созданного таким образом фрейма не существует доменного имени, т.о. в JS-коде внутри фрейма невозможно пользоваться window.localStorage и document.cookie.

[[iframe]]: Включение внешней страницы по ссылке

Тип
Полноширинный
Параграфы
Поддерживает атрибуты HTML

Синтаксис:

[[iframe ссылка атрибут1="значение" атрибут2="значение"]]

Поддерживаются все разрешённые атрибуты HTML.

Ссылки через этот элемент подвергаются стандартной фильтрации.

[[#if]], [[if]]: Отображение элементов по наличию значения

Тип
Зависит от содержимого
Поддерживает атрибуты

Пример использования в строчном варианте:

[[#if {$param} | param exists | param does not exist]]

Пример использования в полноширинном варианте:

[[if {$param}]]
  param exists
[[else]]
  param does not exist
[[/if]]

Наличием значения считается любая непустая строка, кроме строк в формате {$переменная} или %%переменная%%. В связи с тем, что параметр, который не был указан в [[include]] либо модулях, остаётся своим текстовым значением, такая логика позволяет определить, был ли этот параметр передан.

[[#ifexpr]], [[ifexpr]]: Отображение элементов по условию

Тип
Зависит от содержимого
Поддерживает атрибуты

Пример использования в блочном варианте:

[[module CountPages fullname="main"]]
  [[#ifexpr %%count%% > 0 | yes | no]]
[[/module]]

Пример использования в полноширинном варианте:

[[module CountPages fullname="main"]]
  [[ifexpr %%count%% > 0]]
    main page exists
  [[else]]
    main page does not exist
  [[/ifexpr]]
[[/module]]

В случае некорректного синтаксиса выражения (например, одной из переменных не существует, или она передана неверно) выражение считается ложным.

В ином случае любое значение, не являющееся False, 0, 0.0 или "", считается совпадением условия.

Поддерживаемые операции: *, /, +, -, <<, >>, а также операции сравнения ==, !=, <, >, <=, >=.

Большинство операций (кроме прямого сравнения) поддерживаются только с числовыми значениями. Строки, если используются, должны быть указаны в формате JSON (например, "значение").

Кроме того, поддерживаются следующие функции:

  • min(x, y, …) — возвращает наименьшее значение из переданных.
  • max(x, y, …) — возвращает наибольшее значение из переданных.
  • abs(x) — возвращает модуль числа.
  • round(x) — округляет число до целого значения.
  • lower(str) — конвертирует строку в нижний регистр.
  • upper(str) — конвертирует строку в верхний регистр.

[[ifcategory]]: Отображение элементов в зависимости от категории статьи

Тип
Зависит от содержимого
Поддерживает атрибуты

Пример использования:

[[ifcategory +theme]]
Этот текст будет отображаться только в темах.
[[/ifcategory]]
[[ifcategory -theme]]
Этот текст будет отображаться везде, кроме тем.
[[/ifcategory]]

Данный элемент в основном полезен при использовании с [[include]], позволяя вставлять код, ведущий себя по-разному в зависимости от того, в какой статье вставлен.

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

[[iftags]]: Отображение элементов в зависимости от тегов статьи

Тип
Зависит от содержимого
Поддерживает атрибуты

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

  • +тег — в статье должен присутствовать указанный тег.
  • -тег — в статье не должен присутствовать указанный тег.
  • тег без префиксов означает, что в статье должен присутствовать как минимум один из указанных тегов.

Пример использования:

[[iftags объект рассказ +ru]]
Данная статья является объектом или рассказом русского филиала.
[[/iftags]]

[[image]]: Изображение

Тип
Строчный/Полноширинный
Поддерживает атрибуты HTML

Следующий код автоматически вставляет изображение из файлов текущей статьи:

[[image img.png alt="my img"]]

А такой код вставляет изображение из файлов другой статьи:

[[image main/ico_arthub.svg alt="image from another page"]]

Помимо этих двух специальных значений, [[image]] можно также использовать для вставки любых изображений из интернета (однако, это не рекомендуется в связи с гниением ссылок — файлы, загруженные на сайт, гарантированно останутся вместе со статьёй, тогда как файлы из интернета могут исчезнуть или стать недоступными в любой момент).

Также изображение можно автоматически выровнять различным образом с помощью модификаторов f<, f>, <, > и =. В последних трёх случаях изображение становится полноширинным элементом.

  • [[f<image]] — плавающее изображение, выровненное по левой стороне. Такое изображение будет обтекаться текстом и блоками вокруг него.
  • [[f>image]] — плавающее изображение, выровненное по правой стороне.
  • [[<image]] — изображение, выровненное по левой стороне. Такое изображение всегда занимает всю ширину страницы, и в случае, если оно занимает меньше 100% доступного пространства, оставшееся место будет пустым.
  • [[>image]] — изображение, выровненное по правой стороне.
  • [[=image]] — изображение, выровненное по центру.

Данный элемент поддерживает атрибут link, позволяющий автоматически обернуть изображение в ссылку. Такие ссылки подвергаются стандартной фильтрации, и в целом неотличимы от [[a href="…"]][[image …]][[/a]].

[[input]]: Поле ввода

Тип
Строчный
Поддерживает атрибуты HTML

Может использоваться как отдельно, так и вместе с формой ввода.

[[i]]: Наклонный текст

Тип
Строчный
Альтернативные названия
[[italics]], [[em]], [[emphasis]]
Поддерживает атрибуты HTML

[[lines]]: Вставка пустых строк

Тип
Строчный
Поддерживает атрибуты

Данный элемент может использоваться для вставки нескольких пустых строк.

Пример использования:

[[lines 8]]

[[ul]], [[ol]], [[li]]: Списки

Тип
Строчный/Полноширинный
Поддерживает атрибуты HTML
Поддерживает _
  • [[ul]] — ненумерованный список. Полноширинный элемент.
  • [[ol]] — нумерованный список. Полноширинный элемент.
  • [[li]] — элемент списка. Строчный элемент.

Пример использования:

[[ul]]
  [[li]]Первый элемент списка[[/li]]
  [[li]]Второй элемент списка[[/li]]
  [[li]]
    [[ol]]
      [[li]]Первый нумерованный элемент[[/li]]
      [[li]]Второй нумерованный элемент[[/li]]
    [[/ol]]
  [[/li]]
  [[li]]Третий элемент списка[[/li]]
[[/ul]]

На всех элементах списка поддерживаются соответствующие атрибуты HTML.

[[mark]]: Выделенный текст

Тип
Строчный
Альтернативные названия
[[highlight]]
Поддерживает атрибуты HTML

[[module]]: Вставка модуля сайта

Тип
Полноширинный
Альтернативные названия
[[module654]]
Поддерживает атрибуты HTML

Общий синтаксис:

[[module Название_Модуля атрибут1="значение" атрибут2="значение"]]
Содержимое модуля (только для модулей, поддерживающих содержимое)
[[/module]]

Список модулей и их атрибутов перечислен в секции "Модули".

Для модулей, не поддерживающих содержимое (например, [[module Rate]]), указывать закрывающий тег не требуется.

[[table]], [[row]], [[hcell]], [[cell]]: Таблицы

Тип
Полноширинный
Параграфы
Поддерживает атрибуты HTML

Аналогичен классическим таблицам из HTML.

  • [[table]]<table>.
  • [[row]]<tr>.
  • [[hcell]]<th>.
  • [[cell]]<td>.

Блоки, аналогичные <thead>, <tbody>, <tfoot> — отсутствуют.

Пример использования:

[[table class="wiki-content-table"]]
  [[row]]
    [[hcell]]Заголовок 1[[/hcell]]
    [[hcell]]Заголовок 2[[/hcell]]
    [[cell rowspan="2"]]Высокая ячейка[[/cell]]
  [[/row]]
  [[row]]
    [[cell colspan="2"]]Длинная ячейка[[/cell]]
  [[/row]]
[[/table]]

[[tabview]], [[tab]]: Вкладки

Тип
Полноширинный
Параграфы
Альтернативные названия
[[tabs]] (для [[tabview]])
Поддерживает атрибуты HTML

Позволяет добавить в статью элемент с переключающимися вкладками.

Пример использования:

[[tabview]]
  [[tab Вкладка 1]]
    Содержимое вкладки 1
  [[/tab]]
  [[tab Вкладка 2]]
    Содержимое вкладки 2
  [[/tab]]
[[/tabview]]

Для названий вкладок также допустим формат [[tab title="Название вкладки"]].

[[tt]]: Моноширинный текст

Тип
Строчный
Альтернативные названия
[[mono]], [[monospace]]
Поддерживает атрибуты HTML

[[p]]: Явный параграф

Тип
Полноширинный
Альтернативные названия
[[paragraph]]
Параграфы
Поддерживает атрибуты HTML

Позволяет указать HTML-атрибуты текущему параграфу так же, как они могли бы указываться для <p>.

Пример:

[[p style="color: red"]]
Красный параграф.
[[/p]]

[[ruby]], [[rt]]: Аннотирование иероглифов

Тип
Строчный
Альтернативные названия
[[rubytext]] (для [[rt]])
Поддерживает атрибуты HTML

Пример использования:

[[ruby]]マレニア[[rt]]Malenia[[/rt]][[/ruby]]

[[rb]]: Упрощённое аннотирование иероглифов

Тип
Строчный
Альтернативные названия
[[ruby2]]
Поддерживает атрибуты HTML

Пример использования:

[[rb マレニア | Malenia]]

[[size]]: Размер шрифта

Тип
Строчный
Поддерживает атрибуты

Позволяет изменить размер шрифта. В качестве размера можно указывать любое значение, допустимое в CSS.

Пример использования:

Этот текст очень [[size 200%]]большой[[/size]] и [[size 6px]]маленький[[/size]] одновременно.

[[span]]: Строчный универсальный контейнер

Тип
Строчный
Поддерживает атрибуты HTML
Поддерживает _

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

[[s]]: Зачёркнутый текст

Тип
Строчный
Альтернативные названия
[[strikethrough]], [[del]], [[deletion]]
Поддерживает атрибуты HTML

[[sup]]: Надстрочный текст

Тип
Строчный
Альтернативные названия
[[super]], [[superscript]]
Поддерживает атрибуты HTML

[[sub]]: Подстрочный текст

Тип
Строчный
Альтернативные названия
[[subscript]]
Поддерживает атрибуты HTML

[[toc]]: Автоматическое оглавление

Тип
Полноширинный
Поддерживает атрибуты

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

Может иметь следующие префиксы, изменяющие положение элемента:

  • [[f<toc]] — плавающий блок, выровненный по левой стороне. Блок будет обтекаться текстом и блоками вокруг него.
  • [[f>toc]] — плавающий блок, выровненный по правой стороне.

[[u]]: Подчёркнутый текст

Тип
Строчный
Альтернативные названия
[[underline]], [[ins]], [[insertion]]
Поддерживает атрибуты HTML

[[user]]: Ссылка на пользователя

Тип
Строчный
Поддерживает атрибуты
Поддерживает *

Может использоваться в двух вариантах:

  • [[user имя_пользователя]] — выводит обычную ссылку на пользователя.
  • [[*user имя_пользователя]] — выводит ссылку на пользователя и его аватар.

Дополнение: обработка ссылок

Определённые ссылки блокируются сайтом из соображений безопасности.

Если в документации конкретного элемента или модуля не указано обратное, то все ссылки (например, в [], [[[|]]], [[a href="…"]], [[image … link="…"]], и т.п.) проверяются по указанным правилам.

Однозначно запрещённые протоколы для абсолютных ссылок:

  • data:
  • javascript: (кроме ссылки "javascript:;", которая обозначает "ссылку в никуда")

Однозначно разрешённые протоколы для абсолютных ссылок:

  • blob:
  • chrome-extension://
  • chrome://
  • content://
  • data:
  • dns:
  • feed:
  • file://
  • ftp://
  • git://
  • gopher://
  • http://
  • https://
  • irc6://
  • irc://
  • ircs://
  • mailto:
  • resource://
  • rtmp://
  • sftp://

Для блочных элементов корректными ссылками также считаются ссылки, начинающиеся с указанных символов:

  • A-Z, a-z, 0-9, . (обычные относительные ссылки).
  • /, // (абсолютные ссылки с текущего домена и протокола).
  • # (переход по якорю).
  • ? (переход к текущей странице с GET-параметрами).
  • $, &, +, ,, :, ;, =, @, %, -, ~ (прочие спецсимволы, разрешённые для относительных ссылок).

Для элементов свободного синтаксиса используется более строгая проверка с меньшим количеством допустимых спецсимволов, чтобы отделить ссылки от самого синтаксиса:

  • # + (A-Z, a-z, 0-9, _, -, %) (переход по якорю).
  • //адрес (абсолютные ссылки с текущего протокола).
  • /адрес (абсолютные ссылки с текущего домена).
  • любой текст, не начинающийся с /, но содержащий его.

Дополнение: модули

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

В случае, если в результате работы модулей нарушается функциональность сайта, на страницу можно зайти с использованием параметра /nomodule/true (например: https://scpfoundation.net/main/nomodule/true). Данный параметр полностью отключает работу любых модулей на этой странице.

Подробнее о том, как вставить модуль в статью, описано в секции [[module]].

Также, важно иметь в виду, что в случае с модулями, которые поддерживают разметку внутри себя (например, ListUsers, ListPages и CountPages), содержимое модуля в техническом смысле не является содержимым статьи. Так, например, любые заголовки или сноски, указанные внутри модуля, будут отображены только в рамках этого модуля.

Модуль Rate

Поддерживает параметры
Поддерживает содержимое

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

Использование этого модуля обязательно с точки зрения правил публикации, однако не является обязательным с технической стороны. В случае его отсутствия в статье за неё всё ещё можно проголосовать через кнопку "Оценить".

Модуль не принимает параметров.

Модуль CSS

Поддерживает параметры
Поддерживает содержимое

Содержимое данного модуля будет применено к текущей странице как CSS-стили без изменений. Пример:

[[module CSS]]
body {
  background: red;
}
[[/module]]

Модуль ListPages

Поддерживает параметры
Поддерживает содержимое

Позволяет получить список статей по указанным параметрам.

Для каждой из найденных статей будет скопировано содержимое модуля и обработано как разметка с автозаменой следующих переменных:

  • %%name%% — собственный идентификатор статьи (например, main).
  • %%category%% — категория статьи (например, sandbox).
  • %%fullname%% — полный идентификатор статьи, включающий категорию (например, sandbox:main).
  • %%title%% — заголовок статьи.
  • %%link%% — абсолютная ссылка на статью от текущего домена (начинающаяся с /).
  • %%content%% — содержимое статьи (разметка).
  • %%rating%% — рейтинг статьи.
  • %%rating_votes%% — количество голосов на статье.
  • %%popularity%% — популярность статьи: процентное соотношение плюсов (при плюсовой системе) и голосов выше 3.0 (при системе звёзд) к остальным голосам.
  • %%revisions%% — количество правок статьи.
  • %%index%% — порядковый номер статьи среди статей, соответствующих параметрам поиска.
  • %%total%% — общее количество статей, соответствующих параметрам поиска.
  • %%created_by%% — имя пользователя, создавшего статью.
  • %%updated_by%% — имя пользователя, оставившего последнюю правку.
  • %%tags%% — список тегов статьи через запятую.
  • %%tags_linked%% — список ссылок вида /system:page-tags/tag/название_тега на теги статьи через запятую.
  • %%created_at%%дата создания статьи.
  • %%updated_at%%дата последней правки статьи.

Список параметров модуля ListPages:

  • range — может использоваться только в формате range=".".
    Является оптимизацией для обозначения текущей статьи. Позволяет получить переменные для неё.
    При использовании этого параметра любые другие параметры игнорируются.
  • fullname — ограничивает поиск ровно одной статьёй с указанным полным идентификатором.
    Может принимать значение ., в таком случае указывая на текущую статью.
    При использовании этого параметра любые другие параметры игнорируются.
  • pagetype — ограничивает поиск по признаку типа статьи.
    Тип статьи может быть hidden (статьи, идентификатор который начинается с символа _) либо normal (все остальные статьи).
    Значение по умолчанию — normal.
  • name — ограничивает поиск статьями, имеющими указанный собственный идентификатор (без учёта категории).
    Так, name="main" может найти несколько статей, таких как wl:main или sandbox:main.
    Может принимать следующие значения:
    • * (значение по умолчанию) — без ограничений.
    • . — текущая статья; при использовании этого параметра любые другие параметры игнорируются.
    • = — любые статьи с таким же собственным идентификатором, как и текущая.
    • текст% либо текст* — статьи с указанным префиксом идентификатора.
    • конкретный идентификатор статьи — указывает на статьи с указанным идентификатором.
  • tags — ограничивает поиск статьями, имеющими (или не имеющими) указанные теги.
    Может принимать следующие значения:
    • * (значение по умолчанию) — без ограничений.
    • - — только статьи без тегов.
    • = — статьи с такими же тегами, как и текущая; дополнительные теги, которых нет на текущей, разрешены.
    • == — статьи с в точности такими же тегами, как и текущая; дополнительные теги запрещены.
    • выражение iftags для поиска по указанному условию.
  • category — ограничивает поиск статьями, имеющими (или не имеющими) указанную категорию.
    Может принимать следующие значения:
    • * — без ограничений.
    • . (значение по умолчанию) — статьи из текущей категории.
    • выражение ifcategory для поиска по указанному условию.
  • parent — ограничивает поиск статьями с указанной родительской статьёй.
    Может принимать следующие значения:
    • - — только статьи, не имеющие родителя.
    • = — статьи с тем же родителем, что и текущая.
    • -= — статьи с иным родителем, по сравнению с текущей (в том числе без родителя).
    • . — статьи, родителем которых является текущая статья.
    • полный идентификатор — статьи, родителем которых является статья с указанным идентификатором.
  • created_by — ограничивает поиск статьями с указанным автором.
    Может принимать следующие значения:
    • . — текущий пользователь.
    • имя пользователя — статьи, создателем которых является пользователь с указанным именем.
  • created_at — ограничивает поиск по дате создания статей.
    Дата указывается в формате год-месяц-день. Указание месяца и дня необязательно.
    Может принимать следующие значения:
    • = — статьи, созданные в тот же день, что и текущая.
    • =дата — статьи, созданные в указанном временном промежутке.
    • <>дата — статьи, созданные в любом временном промежутке, кроме указанного.
    • >=дата — статьи, созданные после начала указанного временного промежутка.
    • >дата — статьи, созданные после окончания указанного временного промежутка.
    • <=дата — статьи, созданные до окончания указанного временного промежутка.
    • <дата — статьи, созданные до начала указанного временного промежутка.
  • rating — ограничивает поиск рейтингом статей.
    Внимание: добавление этого параметра существенно замедляет поиск.
    Может принимать следующие значения:
    • = — статьи с тем же рейтингом, что и текущая.
    • =рейтинг — статьи с указанным рейтингом.
    • <>рейтинг — статьи с любым рейтингом, кроме указанного.
    • >=рейтинг — статьи с рейтингом выше или равным указанному.
    • >рейтинг — статьи с рейтингом выше указанного.
    • <=рейтинг — статьи с рейтингом ниже указанного.
    • <рейтинг — статьи с рейтингом ниже указанного.
  • votes — ограничивает поиск количеством голосов на статье.
    Внимание: добавление этого параметра существенно замедляет поиск.
    Может принимать следующие значения:
    • = — статьи с тем же количеством голосов, что и текущая.
    • =голосов — статьи с указанным количеством голосов.
    • <>голосов — статьи с любым количеством голосов, кроме указанного.
    • >=голосов — статьи с количеством голосов выше или равным указанному.
    • >голосов — статьи с количеством голосов выше указанного.
    • <=голосов — статьи с количеством голосов ниже указанного.
    • <голосов — статьи с количеством голосов ниже указанного.
  • popularity — ограничивает поиск популярностью статьи.
    Популярность — процентное соотношение плюсов (при плюсовой системе) и голосов выше 3.0 (при системе звёзд) к остальным голосам.
    Внимание: добавление этого параметра существенно замедляет поиск.
    Может принимать следующие значения:
    • = — статьи с той же популярностью, что и текущая.
    • =популярность — статьи с указанной популярностью.
    • <>популярность — статьи с любой популярностью, кроме указанной.
    • >=популярность — статьи с популярностью выше или равным указанной.
    • >популярность — статьи с популярностью выше указанной.
    • <=популярность — статьи с популярностью ниже указанной.
    • <популярность — статьи с популярностью ниже указанной.
  • order — позволяет отсортировать найденные статьи по указанному значению.
    Сортировка по умолчанию происходит по нарастающей. Для сортировки по убывающей необходимо после названия значения добавить desc, например: order="created_at desc".
    Поддерживаемые значения для сортировки:
    • created_at — дата создания.
    • created_by — идентификатор пользователя (не имя!), создавшего статью.
    • updated_at — дата последней правки.
    • name — собственный идентификатор статьи.
    • fullname — полный идентификатор статьи.
    • title — заголовок статьи.
    • rating — рейтинг статьи (внимание: добавление этого параметра существенно замедляет поиск).
    • votes — количество голосов на статье (внимание: добавление этого параметра существенно замедляет поиск).
    • popularity — популярность статьи (внимание: добавление этого параметра существенно замедляет поиск).
    • random — перемешивает статьи в случайном порядке.
  • offset — смещение по отношению к первой найденной статье, с которого будет начата отрисовка модуля; например, offset="1" будет означать, что первая найденная статья не будет отображена.
  • limit — максимальное количество статей для отрисовки в модуле.
  • perpage — максимальное количество статей на одной странице модуля.
    При превышении данного значения на модуле появится список страниц с возможностью переключения между ними.
    Внимание: при указании отрицательного значения параметру wrapper количество статей всё ещё будет ограничено, но список страниц не появится.
  • p — начальная страница модуля, в том случае, если статей больше, чем на одну страницу.

Также могут использоваться следующие параметры модуля для управления выводом информации о статьях:

  • prependLine — указанная в этом параметре разметка будет отрисована перед началом отрисовки статей; как правило, используется для указания заголовков таблиц.
    Переменные в этом параметре не поддерживаются.
  • appendLine — указанная в этом параметре разметка будет отрисована в конце после отрисовки статей.
    Переменные в этом параметре не поддерживаются.
  • separateбулево значение (по умолчанию — true); при включении данного параметра разметка для каждой статьи (а также appendLine и prependLine) будет обработана как абсолютно отдельный элемент.
    Это, главным образом, влияет на работу [[iftags]] и [[ifcategory]] в разметке, на возможность использования изображений из этих статей через [[image]], а также на возможность склеивать разметку в цельный код (например, для таблиц).
    Таким образом, для отрисовки таблиц через ListPages необходимо указывать separate="false".
  • wrapperбулево значение (по умолчанию — true); при включении данного параметра содержимое модуля будет заключено в <div>-элемент с классом list-pages-box.
    Также он включает динамическую (AJAX) функциональность модуля ListPages, такую, как переключение страниц.
    Выключать этот параметр не рекомендуется.
  • reverseбулево значение (по умолчанию — false); при включении данного параметра список статей будет развёрнут в обратном порядке.
    Данное действие будет совершенно после обычной сортировки через параметр order.

Модуль CountPages

Поддерживает параметры
Поддерживает содержимое

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

Может содержать разметку, в которой с помощью автозамены будут доступны следующие переменные:

  • %%total%%, %%count%% — количество статей, соответствующих указанным параметрам.

Модуль ListUsers

Поддерживает параметры
Поддерживает содержимое

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

Может содержать разметку, в которой с помощью автозамены будут доступны следующие переменные:

  • %%number%% — ID пользователя.
  • %%title%%, %%name%% — имя пользователя.
  • %%avatar%% — ссылка на аватар пользователя.

Стандартное поведение модуля подразумевает, что если текущий пользователь не аутентифицирован на сайте, модуль не будет отображён.

Для предотвращения подобного поведения можно использовать булев параметр always. При его установке в положительное значение содержимое модуля всё ещё будет отображено, но все переменные, кроме %%avatar%% (которая будет ссылкой на аватар по умолчанию), будут недоступны.

Таким образом, вы можете проверить, аутентифицирован ли пользователь:

[[module ListUsers always="yes"]]
  [[if %%number%%]]
    пользователь вошёл на сайт
  [[else]]
    пользователь не вошёл на сайт
  [[/if]]
[[/module]]

Модуль Redirect

Поддерживает параметры
Поддерживает содержимое

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

  • destination — точка назначения.
    Не фильтруется стандартным способом. Запрещены только ссылки, начинающиеся с data: или javascript:.
  • noredirect — при позитивном булевом значении предотвращает срабатывание модуля на текущей странице.
    Обычно используется в адресе страницы при редактировании статьи, содержащей этот модуль (/noredirect/true).

Пример:

[[module Redirect destination="/scp-1730"]]

Модуль InterWiki

Поддерживает параметры
Поддерживает содержимое

Системный модуль. Используется в сайдбаре для показа переводов текущей страницы на другие языки.

Реализован через API Crom, созданное и поддерживаемое англоязычным сообществом SCP.

Для каждого из найденных переводов будет скопировано содержимое модуля и обработано как разметка с автозаменой следующих переменных:

  • %%url%% — адрес перевода.
  • %%language%% — название языка перевода или название вики (в случае, если несколько вики имеют один язык), на языке, указанном в параметре language.
  • %%language_native%% — название языка перевода на языке перевода.
  • %%language_code%% — код языка перевода (например, en, ru).

Список параметров модуля InterWiki:

  • article — название статьи, для которой должен быть получен список переводов.
  • prependLine — указанная в этом параметре разметка будет отрисована перед началом отрисовки переводов в том случае, если переводов больше одного.
    Переменные в этом параметре не поддерживаются.
  • appendLine — указанная в этом параметре разметка будет отрисована в конце после отрисовки переводов в том случае, если переводов больше одного.
    Переменные в этом параметре не поддерживаются.
  • language — язык, на котором будут указаны названия переводов в переменной %%language%%.
  • order — направление и переменная для сортировки. Принимает все допустимые на данный момент переменные (url, language, language_native, language_code). Возможно указать desc для сортировки в обратном порядке (например, order="language_native desc".
  • omitlanguage — язык, который нужно игнорировать при получении списка переводов (обычно — язык текущей вики).
  • empty — указанная в этом параметре разметка будет отрисована в том случае, если не найдено ни одного перевода.
  • loading — указанная в этом параметре разметка будет отрисована сразу после загрузки страницы и до получения информации о переводах.

Модули TagCloud и PagesByTag

Системные модули, обеспечивающие функционирование страницы «Облако тегов».

Модуль SiteChanges

Системный модуль. Обеспечивает функционирование страницы «Свежие правки».

Модули ForumStart, ForumCategory, ForumThread, ForumNewThread, ForumNewPost

Системные модули, обеспечивающие функционирование форума.

  • Модуль ForumStart должен располагаться на системной странице forum:start и отвечает за отображение списка разделов.
  • Модуль ForumCategory должен располагаться на системной странице forum:category и отвечает за отображение списка тем в указанном разделе.
  • Модуль ForumThread должен располагаться на системной странице forum:thread и отвечает за отображение сообщений в указанной теме.
  • Модуль ForumNewThread должен располагаться на системной странице forum:new-thread и отвечает за возможность создания темы в указанном разделе.
  • Модуль ForumNewPost не используется на страницах напрямую, но используется через API модулей со страницы темы.

Модуль RecentPosts

Системный модуль, обеспечивающий функционирование страницы «Последние сообщения форума».



версия страницы: 86, Последняя правка: 04 Окт. 2024, 18:04 (65 дней назад)
Пока не указано иное, содержимое этой страницы распространяется по лицензии Creative Commons Attribution-ShareAlike 3.0 License.