Module:CategoryList
ظٲہِریَتھ
"یَمہٕ ماڈیوٗلُک دَستاویز ییٚہِ Module:CategoryList/دَستاویز جاے بَناونہٕ"
-- Module:CategoryList
-- Fetches pages from a category using the MediaWiki API (works even if catTitle:members is disabled)
local p = {}
local function fetchCategoryMembers(categoryName, namespace)
local apiUrl = mw.uri.fullUrl('Special:ApiHelp', {
action = 'query',
list = 'categorymembers',
cmtitle = 'Category:' .. categoryName,
cmlimit = '500',
cmnamespace = namespace or '',
format = 'json'
})
local http = require('mw.http')
local res = http.fetch(apiUrl)
if not res or res.status ~= 200 then
return nil, 'API request failed'
end
local data = mw.text.jsonDecode(res.body)
if not data or not data.query or not data.query.categorymembers then
return nil, 'Invalid API response'
end
return data.query.categorymembers
end
function p.main(frame)
local categoryName = frame.args[1]
local namespace = frame.args.namespace or frame.args[2]
if not categoryName or categoryName:match('^%s*$') then
return '<strong class="error">Error: No category specified. Usage: {{#invoke:CategoryList|main|CategoryName}}</strong>'
end
local members, err = fetchCategoryMembers(categoryName, namespace)
if not members then
return '<strong class="error">' .. err .. '</strong>'
end
if #members == 0 then
return 'This category is currently empty.'
end
local listItems = {}
for _, page in ipairs(members) do
table.insert(listItems, '* [[' .. page.title .. ']]')
end
return table.concat(listItems, '\n')
end
return p