Участник:Arbnos/Написание статей/Модуль:Category/doc

Этот модуль позволяет получить доступ из Lua к содержимому категорий.

Ограничения

  • Модуль в настоящее время получает данные через расширение CategoryTree. По этой причине через запрос к категории может быть получено только 200 первых элементов, соответствующих параметрам запроса. Если таких элементов в категории больше, ошибки не возникнет, но они просто не будут обработаны (контролируйте работу через mw.site.stats.pagesInCategory() или {{PAGESINCATEGORY}}).
  • Обновление страниц, где задействован данный модуль, с обновлением содержимого категорий не гарантируется. Включите на страницу счётчик элементов в категории, чтобы при добавлении и удалении элементов из неё страница обновлялась (однако изменения ключей сортировки могут при этом всё равно не отслеживаться).

Режимы

Режимы работы (далее mode) такие же, как у тэга {{#categorytree}}:

all
Выбрать все элементы. Режим по умолчанию.
categories
Выбрать только подкатегории.
pages
Выбрать только страницы.
parents
Выбрать родительские категории данной категории.

Обратите внимание, что в режиме parents счётчики содержимого родительских категорий не обрабатываются.

Если передан список пространств имён через пробел (далее namespaces, основное пространство как 0 или -), этот параметр игнорируется.

Функции

content

{{#invoke:Category|content|Имя категории|
format = * [[{{((}}#ifeq:$5{{!}}0{{!}}:$1:$2{{((}}!{{))}}{{))}}$2]]|
namespaces = 0 Файл}}

Выводит список элементов данной категории. Параметры:

1, name
Имя категории без префикса.
format
Формат вывода, применяется при отсутствии параметра t для всех элементов, кроме категорий и файлов. Для правильной работы должен содержать «выключенный» вики-код, т. е. следует вместо {{, |, }} использовать {{((}}, {{!}}, {{))}}. Значение по умолчанию см. в коде модуля (оно такое, что результаты формируются в безмаркерный список, похожий на вывод тэга categorytree). Следующие последовательности заменяются:
$1
Название пространства имён.
$2
Имя страницы без префикса.
$3
Количество страниц в категории (если пустая — пустая строка).
$4
Строчка, составляемая из количеств подкатегорий, обычных страниц и файлов в категории в соответствии с параметрами fc…. В соответствующих трёх параметрах используются форматы функции string.format().
$5
Номер пространства имён.
fccategories
Формат счётчика категорий. По умолчанию %i кат..
fcfiles
Формат счётчика файлов. По умолчанию %i ф..
fcpages
Формат счётчика страниц. По умолчанию %i с..
fcsep
Разделитель счётчиков. По умолчанию , .
j
Разделитель записей. По умолчанию новая строка.
mode
Режим.
namespaces
Пространства имён.
sort
Название шаблона (для пространства имён Шаблон: префикс не нужен), по которому будет осуществляться пересортировка результатов. Шаблон будет вызван для каждого элемента с нижеследующим набором параметров, после чего его вывод будет сопоставлен данному элементу, и элементы будут расставлены по возрастанию данных выводов с точки зрения функции compare модуля string. Элементы, значение шаблона для которых совпадёт с параметром {{{sortdel}}}, будут удалены из выборки. Параметры шаблона:
1
Имя элемента без префикса.
2
Номер пространства имён.
3
Название категории, в которой выполняется операция.
4
Значение параметра sortarg вызова #invoke.
all, categories, pages, files
Для элементов-подкатегорий — соответствующие счётчики.
Перед названием шаблона может использоваться знак >, с которым сортироваться будет по убыванию. Если параметр задать, а название шаблона не указать, сортировка будет осуществляться по имени страницы. Если же данный параметр равен ], то элементы будут выведены в порядке, обратном стандартному для категории.
sortarg
Дополнительный параметр всем вызовам шаблона sort.
sortdel
Значение шаблона, вычисленного sort, при котором данный элемент надо исключить из выборки.
t
Шаблон для форматирования вывода (перекрывает параметры f…). Вызывается с параметрами, аналогичными параметрам sort, но четвёртый параметр берётся из targ.
targ
Дополнительный параметр всем вызовам шаблона t.

supercats

{{#invoke:supercats|Энергетика|t=Элемент списка надкатегорий энергетики}}

Выводит список надкатегорий данной категории. Можно пользоваться как более удобной альтернативой {{#invoke:category:content|Имя категории|mode=parents|…}}. Параметры:

1, name
Имя категории без префикса.
format
Формат вывода. По умолчанию : [[:Категория:$1|$1]] (единственный параметр формата — имя категории).
j
Разделитель записей. По умолчанию новая строка.
sort
Шаблон сортировки. Механизм работы аналогичен применяемому в функции content, но параметров только три — имя надкатегории, имя категории и значение параметра sortarg.
sortarg
Дополнительный параметр всем вызовам шаблона sort.
sortdel
Значение шаблона, вычисленного sort, при котором данный элемент надо исключить из выборки.
t
Шаблон форматирования. Механизм работы аналогичен применяемому в функции content, но параметров только три — имя надкатегории, имя категории и значение параметра targ.
targ
Дополнительный параметр всем вызовам шаблона t.

Статические методы

local C=require('Module:Category');

gelement

for g,ns,all,cats,pgs,files in С.gelement('Имя категории', mode, namespaces) do  end

Итератор по элементам категории. Возвращаемые значения:

g
Имя страницы без префикса пространства имён.
ns
Номер пространства имён. Имя пространства можно получить с помощью mw.site.namespaces[ns].name.
all, cats, pgs, files
Для подкатегорий (ns==14): счётчики всех страниц, подкатегорий 2-го уровня, страниц и файлов соответственно.

Supercats

local t = C.Supercats('Имя категории');
mw.log("Надкатегории категории Имя категории:");
for _, c in ipairs(t) do mw.log(c) end

Возвращает список надкатегорий заданной категории. Элементы списка — строки (названия родительских категорий без префикса).