dev

Эта страница содержит ответы на самые часто задаваемые вопросы, относящиеся к созданию шаблонов на Lua.

Основные

Что такое Lua?

Lua — это язык программирования, который доступен на Fandom с помощью расширения Scribunto, позволяющий создавать мощные шаблоны.

Как можно конвертировать шаблоны в модули?

Main article: Wikitext migration

Как можно создать документацию модуля?

Scribunto позволяет создавать документации для модулей. По умолчанию подстраница модуля "/doc" используется для этих целей, а также она автоматически вставляется на страницу с модулем выше исходного кода. Например: документация модуля "Модуль:Bananas" будет иметь адрес "Модуль:Bananas/doc".

Примечание: сам по себе модуль не может иметь интервики ссылки или категории. Их можно добавить, если в документации модуля прописать их внутри тега <includeonly>...</includeonly>.

Могу ли я получить доступ к модулям, которые находятся на другой вики?

Main article: Global modules

Да. Все вики могут использовать модули, которые находятся на вики dev.fandom.com, но не на других вики.

Могу ли я делать с модулями всё то, что могу делать с шаблонами?

Да.

Есть ли вещи, которые можно сделать только при помощи модулей?

Да. Пользователи могут достать параметры шаблона и из перенесённой страницы, и из шаблона, использовать циклы и многое другое.

Есть ли у модулей какие-то лимиты?

Да. Lua может выполняться максимум 7 секунд на одной странице, а также у него есть предел используемой памяти. [1].

Вопросы, связанные с программированием

Могу ли я передать одну и ту же переменную в другой модуль на одной странице?

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

Существуют ли встроенные библиотеки MediaWiki?

Main article: Scribunto libraries

Да.

Существуют ли инструменты отладки для модулей?

Main article: Debug console

Да. На каждой странице модуля существует встроенная отладочная консоль, а также существуют модули, которые помогают в отладке.

Могу ли я получить название страницы, на которой вызывается модуль?

Да, используя "frame.getParent():getTitle".

Могу ли я получить параметры, введённые на "родительской" странице?

Да, используя "frame.getParent().args".

Как я могу посмотреть ошибки в модуле?

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

Расширения

Совместим ли Scribunto с другими расширениями?

Большинство расширений полностью совместимы со Scribunto, но некоторые могут не работать. Например нельзя использовать mw.html для создания портативных инфобоксов. Для этого нужно использовать функцию frame.preprocess.

Может ли модуль получить страницы из какой-то категории?

Нет. As of 2016/07, Scribunto does not have this capability, and this is only available in extensions.

Примечания