Википедия:Функции парсера
Базовый набор функций парсера известен под названием magic words («волшебные слова», «магические слова»). См. также mw:Help:Extension:ParserFunctions/ru и Module:String. Общий синтаксис функций парсера таков: {{#функция: аргумент 1 | аргумент 2 | аргумент 3 ... }} Если необходимо, чтобы значение, выдаваемое парсером, было частью таблицы, необходимо вместо символа вертикальной черты использовать шаблоны-подстановки — {{!-}}, {{!}}, {{!!}}, — которые адекватно воспринимается функциями парсера, и при формировании страницы движком MediaWiki раскрываются в символы, формирующие таблицу — Для формирования таблицы можно также использовать язык HTML:
Функции#exprФункция #expr производит математические вычисления над числами или переменными/параметрами, приводимыми к числам. Синтаксис: {{#expr: выражение }} Поддерживаются следующие операторы (перечислены в порядке, примерно соответствующем их приоритету):
Это не все имеющиеся операторы. Более подробная документация по операторам функции — m:Help:Calculation. Как всегда, лучше поставить лишние скобки, чем ломать голову с порядком вычисления. На выводе логических переменных 0 означает ложь, а 1 — истину. Например: {{#expr: (100 - 32) / 9 * 5 round 0 }} выдаёт: 38. Произведено преобразование 100° по Фаренгейту в градусы по Цельсию с округлением до ближайшего целого числа. #ifФункция #if («если») служит для создания конструкций вида if-then-else. Её синтаксис таков: {{#if: тестовая строка | текст, если непуста | текст, если пуста }} Если тестовая строка пуста или состоит только из пробелов, то возвращается «текст, если пуста»; в обратном случае возвращается «текст, если непуста». Последний параметр может быть опущен — в этом случае при пустой строке будет возвращена пустая строка. Обратите внимание, что #if не поддерживает сравнение при помощи «=» и прочие математические операции. Так, Содержимое после вертикальных черт воспринимается как написанное с начала строки, поэтому символы #ifeqФункция #ifeq («if equal», «если равны») сравнивает две строки, возвращая ещё одну строку в зависимости от результата сравнения. Её синтаксис таков: {{#ifeq: строка для сравнения 1 | строка для сравнения 2 | текст, если равны | текст, если не равны }} #ifexistФункция #ifexist («if exist», «если существует») похожа по синтаксису на #if, только вместо условия проверяется существование статьи с указанным заголовком. Проверка выполняется с учётом регистра после приведения проверяемого заголовка к каноническому виду (если в начале стоит строчная буква, то она преобразуется в прописную). Например:
{{#ifexist}} не работает с относительными путями типа /подстраница. Для пространства имён «Файл» (оно же «File», «Изображение») проверяется наличие только локального файла, но не файла на Викискладе. Для проверки наличия доступного файла также и на Викискладе, нужно использовать префикс «Media:». Пример (файл Example.png загружен только на Викисклад):
Если была создана локальная страница описания файла с Викисклада, все 3 варианта вернут «есть». Также работает с параметрами шаблонов. Количество вызовов этой функции на одной странице ограничено. Если оно превышено, страница попадает в категорию Википедия:Страницы со слишком большим количеством вызовов ресурсоёмких функций. Количество вызовов функции на странице необходимо снизить. #ifexpr#ifexpr вычисляет математическое выражение и возвращает одну из двух строк в зависимости от результата. {{#ifexpr: выражение | текст, если истина | текст в противном случае }} Математический синтаксис такой же, как у #expr. #switch#switch сравнивает одно значение со многими, возвращая результат, если найдено совпадение. Если совпадение не найдено, то возвращается указанный в конце записи результат по умолчанию (он обязательно должен быть последним). Наличие этого результата необязательно, и в случае отсутствия его и совпадений ничего возвращено не будет. {{#switch: сравниваемая величина | значение1 = результат1 | значение2 = результат2 | ... | значениеn = результатn | результат по умолчанию }} Если для нескольких значений должен быть одинаковый результат, то запись можно сократить: {{#switch: сравниваемая величина | значение1a | значение1b | ... | значение1x = результат1 | значение2a | значение2b | ... | значение2y = результат2 | ... | значениеNa | значениеNb | ... | значениеNz = результатN | результат по умолчанию }} #switch может использоваться вместо одного или нескольких #ifeq:
Если сравниваемая величина или значения содержит знак равенства (=), то #switch не сможет правильно сравнить её и значения. Для этого нужно обязательно в значениях (но необязательно в сравниваемой величине) использовать шаблон {{=}}, который содержит знак равенства, или код
Если результат по умолчанию содержит знаки «=», перед ним можно написать #time#time — функция, позволяющая выводить время и дату в заданном формате. Синтаксис: {{#time: формат }} {{#time: формат | время }} {{#time: формат | время | язык }} Параметр время принимает дату в формате гггг-мм-чч, где гггг — год, мм — номер месяца, чч — число месяца. Если параметр не задан, то используется текущее время и дата. Параметр язык принимает код языка по ISO 639-1. Если параметр не задан, то время и дата выводятся на русском языке. Из-за кэширования возможно различие между реальным временем и отображаемым. Для ручного обновления сохраните страницу, не делая никаких изменений, или перейдите по адресу http://ru.wikipedia.org/wiki/Имя_страницы?action=purge (подробнее см. Википедия:Кэш#Чистить/актуализировать кэш сервера). Параметр формат подобен используемому в PHP-функции date():
Расширение PHP синтаксиса:
Все другие символы будут выведены без изменений.
Формат параметра время идентичен используемому в PHP-функции strtotime(). Это могут быть абсолютные и относительные даты, например «December 11»[t 1] и/или «+10 hours», что может использоваться для перевода временных зон. Если вам нужно перевести в дату метку времени UNIX, поставьте перед ней @.
Число римскими цифрами
Примечания
#rel2absФункция #rel2abs преобразует относительный путь ссылки в абсолютный. {{#rel2abs: путь }} {{#rel2abs: путь | базовый путь }} Под относительным путём принимается такой, который начинается с символов
Если базовый путь не указан, будет использован текущий.
Чтобы не проверять, существует ли искомый путь, можно использовать эту функцию в комбинации с
Если путь, передаваемый функции в качестве параметра, не идентифицирован как относительный путь, функция вернёт в качестве результата его. Например:
#titlepartsФункция #titleparts возвращает подстроку до нужного слэша. Основной целью является возможность получения страниц всех уровней, для которых данная является подстраницей. {{#titleparts: название страницы | количество сегментов | начиная с (по умолчанию 1) }} В случае, когда количество сегментов равно нулю, больше количества уровней статьи или его невозможно преобразовать в число, возвращается название страницы целиком (или с сегмента начиная с до конца, если он указан). Внимание: всегда, когда возвращается первый сегмент строки, он начинается с Заглавной буквы.
Можно указывать отрицательные значения параметров: для количества сегментов это обозначает исключение из результата количества сегментов последних частей (всех, если больше их количества), для начиная с обозначает начало вывода с −начиная с сегмента справа.
Строки более 255 символов всегда возвращаются как переданы. #iferror{{#iferror: выражение | ошибка | удачно }} Возвращает ошибку, если выражение содержит строку <strong class="error">, которая генерируется функциями #expr, #ifexpr, #time, #rel2abs и в некоторых других ситуациях в MediaWiki (такими как глубокая рекурсия). Это самый удобный способ отлавливать неправильный ввод, который должен быть передан некоторым другим функциям парсера. Например:
Последние два параметра необязательны. Если параметр удачно опущен, тогда в случае удачи будет возвращено выражение. Если параметр ошибка также опущен, тогда в случае ошибки не будет выведено ничего, а в случае удачного выполнения будет возвращено выражение.
Таким образом:
См. также: r29774, r29775, r29877. #lstЕсли вы хотите включить часть страницы pagename в другую, то механизм включения отдельных секций позволяет более гибко включать содержимое одних страниц в другие, чем полное включение страниц при помощи {{:pagename}} и Данный механизм позволяет отметить на включаемой странице несколько секций, причём они могут перекрываться. См. также
История установки расширенияРасширение было написано Тимом Старлингом и установлено во всех проектах фонда «Викимедиа» в апреле 2006 года. |
Portal di Ensiklopedia Dunia