- Это расширение подключено на ФЭНДОМЕ по умолчанию.
Синтаксический анализатор — часть кода MediaWiki, позволяющая выполнять логические операции, во время выполнения которых анализатор использует параметры, заданные заранее, и выводит результат.
Анализатор заполняется так же, как и шаблоны, используя фигурные скобки. Их можно легко распознать по наличию двоеточия или решётки (#) в функции (или же всего сразу, как в случае с {{#if:}}
).
Список всех доступных анализаторов на вики можно найти на странице «Служебная:Version».
Шаг за шагом[]
- Подберите нужную функцию анализатора, подходящую для вашей логической операции. Обратите внимание на то, что существует много других доступных функций, позволяющих намного быстрее и легче провести ту или иную операцию.
Ниже раздела с примером находится дополнительная информация с ссылками, позволяющими подробнее ознакомится с каждым видом функции анализатора. - Определите правильный синтаксис, который будете использоваться в функции.
В нашем случае мы будем использовать функцию{{#ifexpr:}}
, которая доступна на всех вики по умолчанию. Её синтаксис:
{{#ifexpr: условие | значение, если условие истинно | значение, если условие ложно }}. - Заполним синтаксис функции.
{{#ifexpr: 1 > 0 | да | нет }}
В примере выше мы использовали математическое условие (1 > 0), при истинном значении которого анализатор выдаст нам да, а при ложном значении — нет. - Сохраните страницу с анализатором и убедитесь, что функция возвращает ожидаемое значение. В нашем примере анализатор должен вернуть значение да, так как 1 больше, чем 0.
{{#ifexpr: 1 > 0 | да | нет }} → да.
Посмотрим, что произойдёт, если мы изменим условие на 1 < 0. В данном случае анализатор вернёт нам значение нет.
{{#ifexpr: 1 < 0 | да | нет }} → нет.
Пример выше может показаться глупым, ведь мы всегда знаем, что 1 больше 0. Но его возможности увеличиваются, когда мы используем переменную в условии. Давайте представим, что вы создаёте инфобокс для вики о телесериале и хотите автоматически определять возрастную группу персонажа по его возрасту.
Добавив в свой инфобокс анализатор {{#ifexpr: {{{Возраст}}} >= 18 | Этот персонаж взрослый | Этот персонаж подросток }}
, вы получите значение Этот персонаж взрослый, если заданная вами переменная «Возраст» будет больше или равна 18. Если же меньше, анализатор вернёт вам значение Этот персонаж подросток.
Встроенные в MediaWiki анализаторы[]
Программное обеспечение MediaWiki по умолчанию имеет свои собственные анализаторы, весь список которых можно найти на MediaWiki.org. В нашем случае мы приведём самые полезные.
{{fullurl:}}
- Возвращает URL ссылку заданной страницы.
{{fullurl:Вики Сообщества}}
→ https://community.fandom.com/ru/wiki/%D0%92%D0%B8%D0%BA%D0%B8_%D0%A1%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%B0{{#language:}}
- Конвертирует языковой код в название языка.
{{#language:es}}
→ español{{lc:}}
- Переводит все буквы строки в строчные (противоположный эффект у
{{uc:}}
). {{lc:ПРИВЕТ}}
→ привет{{ns:}}
- Определяет название пространства имён по его номеру.
{{ns:4}}
→ Вики Сообщества{{plural:}}
- Выводит форму множественного числа (исключая первый параметр) в зависимости от числа (первый параметр).
{{PLURAL:3|страница|страницы|страниц}}
→ страницы{{PLURAL:5|страница|страницы|страниц}}
→ страниц
Расширение ParserFunctions[]
Одним из самых популярных расширений MediaWiki является расширение ParserFunctions, добавляющее новые полезные функции. Оно по умолчанию включено на всём пространстве ФЭНДОМА и в нём присутствуют функции устаревшего расширения StringFunctions, в частности, значимая функция {{#explode}}.
Расширении ParserFunctions включает в себя функции для математических операций, операций с условиями и операций с временем. Полный список и документацию по данному расширению можно найти на официальной странице расширения.
Другие расширения[]
Существуют также несколько других популярных расширений, добавляющих новые функции анализатора.
- Arrays — добавляет {{#arraydefine}}, {{#arrayprint}}, {{#arraysearcharray}}.
- Semantic MediaWiki — добавляет {{#ask}}, {{#set}}, {{#show}}.
- Semantic Forms — добавляет {{#formlink}}, {{#forminput}}, {{#arraymap}} .
- Simple Calendar — добавляет {{#calendar}}.
- Variables — добавляет {{#var}}, {{#vardefine}}, {{#vardefineecho}}.