Hoppa till innehållet

Modul:Sportklubb WD

Från Wikipedia

Dokumentation [visa] [redigera] [historik] [rensa sidcachen]


Detta är en modul för att information om sportklubbar och landslag. Modulen hämtar uppgifter från Wikidata och lägger in det i Mall:Faktamall. Modulen anropas genom att lägga in {{#Invoke:Sportklubb WD | club}} i artikeln.

Argument[redigera wikitext]

Vanligen behövs inga andra argument, men modulen kan anropas med nedanstående argument:

  • id - id för en entitet på wikidata, som t.ex. Hylte/Halmstad VBK (Q3143961) för Hylte/Halmstad VBK. Argumentet behövs vanligen inte då modulen läser av det direkt om sidan är länkad till wikidata. Däremot är det användbart om sidan på Wikipedia av en eller annan anledning inte är länkad till wikidata.
  • width_px - bredd (i pixel) för bild eller logotyp som visas. Användbart framförallt om infoboxen annars skulle bli alldeles för bred.

Beskrivning[redigera wikitext]

Modulen består av följande delar:

  • Tränare för klubben. Dessa hämtas från huvudtränare (P286) och sorteras efter tidpunkten då personen startade som tränare.
  • Klubbens namn i olika sammanhang. Denna hämtas från namn (P2561) och sorteras efter tidpunkt då namnet började användas (om det är känt)

För alla delar gäller att de bara visas i infoboxen om det finns några inlagda uppgifter (t.ex. visas inte individuella utmärkelser om det inte finns några inlagda).

Felsökning[redigera wikitext]

Modulen försöker visa ett meddelande direkt i sidan om information saknas på wikidata som gör att den inte kan visa informationen på det sätt som det är tänkt. Detta sker vanliga genom att använda Mediawikis referenssystem (d.v.s. ni ser en siffra i upphöjd format som när ni klickar på den tar er till sidans referensdel där det finns mer information).

Om du får ett meddelande som börjar Luafel i Modul:Sportklubb_WD skriv gärna ett meddelande på modulens diskussionssida.

p = {}

local wd = require( 'Modul:Referenshantering' )
local sd = require( 'Modul:Sportdata' )

p.iRefcounter=0

p.infobox = function(frame)
	p=p.data(frame)
    myArgs={titel=p.label,grundstil="width:" .. txtWidth_px}
    myArgs[txtHeaderStyle] = txtStyleMain
    p.iCounter=0
	if p.image then
		showImage(p.image)
		else
		if p.logo then
			showImage(p.logo)
			end
		end
	p.showpartininfobox(txtFoundedDateLabel,'founded',true)
	p.loopitems(txtSeatLabel,'location',{'name','country'},', ',' och ')
    p.showpartininfobox(txtDissolvedDateLabel,'dissolved')
    p.showpartininfobox(txtWebsiteLabel,'website')
    p.showpartininfobox(txtNickNameLabel,'nickname')
    p.loopitems('Sporter','arraySports',{'data'},', ',' och ')
	bHasKit1,kit1=getKit(frame,1,txtHomeKit)
	bHasKit2,kit2=getKit(frame,2,txtAwayKit)
	bHasKit3,kit3=getKit(frame,3,txt3rdKit)
	bHasKit=bHasKit1 or bHasKit2 or bHasKit3
	if (bHasKit) then
		p.iCounter=p.iCounter+1
	    myArgs[txtContent .. p.iCounter]='<table bgcolor=#ffffff><tr><td>' ..kit1 .. '</td><td>' .. kit2 .. '</td><td>' .. kit3 .. '</td></tr></table>'
	    myArgs[txtContent .. p.iCounter .. txtStyle]='background:#ffffff'
	    end
    p.iViewAlternativeTemporalData=1
	p.resulttable(p.all(p,"results"))
	if p.txtPlayerCategory~=nil then
		p.iCounter=p.iCounter+1
	    myArgs[txtHeader .. p.iCounter]=txtPlayersHeaders
		p.iCounter=p.iCounter+1
	    myArgs[txtContent .. p.iCounter]='[[:' .. p.txtPlayerCategory .. '|' .. txtPlayersDescription .. ']]'
		end    
    p.showtemporalpartininfobox(txtClubCoachesHeader,txtCoachDescriptionLabel,txtNameHeader,p.coaches)
    p.showtemporalpartininfobox(txtNamesHeader,txtNamesDescription,txtNameHeader,p.names)
    
    -- Under --
	myArgs['under']='[https://www.wikidata.org/wiki/' .. p.objectMainId .. ' '.. txtEditComment .. ']'
	if (p.iCounter<2) then
		myArgs['under']=myArgs['under']..'[['..txtCategory .. ':' .. txtFewItems .. ']]'
		end
	return frame:expandTemplate{ title = txtTemplate .. ':' .. txtInfoboxTemplate , args =myArgs}
end

p.data = function(frame)
	p.frame=frame
	if (frame.args['qid']) then
		p.objectMainId=frame.args['qid'] else
		p.objectMainId=mw.wikibase.getEntityIdForCurrentPage()
	end
	-- get main id (if set in call use that, otherwise use connected object)
	tmpBasicData=getGeneralInformation(frame,p.objectMainId,true)
	p=merge(p,tmpBasicData)
	p.objectIds={}
	-- get part ids (if set in call use that, otherwise use P527 [part of])
	if (frame.args['qids']) then
		p.objectIds = split(frame.args['qids'],",")
		else
		claimParts=mw.wikibase.getBestStatements(p.objectMainId, 'P527' )
	    for key, value in pairs( claimParts ) do
		    idPart=value.mainsnak.datavalue.value.id
			table.insert(p.objectIds,idPart)
	    end	
    end
	for i, value in ipairs(p.objectIds) do
		p[value]=getGeneralInformation(frame,value,false)
	end
	return p
end

p.club = function(myframe)
	if (myframe.args['qid']) then
		entityid=myframe.args['qid'] else
		entityid=mw.wikibase.getEntityIdForCurrentPage()
		end
if not (entityid==nil) then	
	--Start with all possible arguments
	if (myframe.args[txtHideable]==txtYes) then
		bHideable=true
		else
		bHideable=false
	end
	if (myframe.args['condensed']=='yes') then
		bCondensed=true
		else
		bCondensed=false
		end
	if myframe.args['txtFoundedDate']~=nil then
		txtFoundedDateLabel=myframe.args.txtFoundedDate
		end
	if myframe.args['txtDissolvedDate']~=nil then
		txtDissolvedDateLabel=myframe.args.txtDissolvedDate
		end
	if myframe.args['txtSeat']~=nil then
		txtSeatLabel=myframe.args.txtSeat
		end
	if myframe.args['txtHomeVenue']~=nil then
		txtHomeVenueLabel=myframe.args.txtHomeVenue
		end
	if myframe.args['txtWebsite']~=nil then
		txtWebsiteLabel=myframe.args.txtWebsite
		end
	if myframe.args['txtClubTeamResultHeader']~=nil then
		txtClubTeamResultHeader=myframe.args.txtClubTeamResultHeader
		end
	if myframe.args['txtClubCoachesHeader']~=nil then
		txtClubCoachesHeader=myframe.args.txtClubCoachesHeader
		end
	if myframe.args['txtNamesHeader']~=nil then
		txtNamesHeader=myframe.args.txtNamesHeader
		end
	if myframe.args['txtNamesDescription']~=nil then
		txtNamesDescription=myframe.args.txtNamesDescription
		end
	if myframe.args['txtCompetitionHeader']~=nil then
		txtCompetitionHeader=myframe.args.txtCompetitionHeader
		end
	if myframe.args['txtNameHeader']~=nil then
		txtNameHeader=myframe.args.txtNameHeader
		end
	if myframe.args['txtSeasonHeader']~=nil then
		txtSeasonHeader=myframe.args.txtSeasonHeader
		end
	if myframe.args['txtPositionHeader']~=nil then
		txtPositionHeader=myframe.args.txtPositionHeader
		end
	if myframe.args['txtInfoboxTemplate']~=nil then
		txtInfoboxTemplate=myframe.args.txtInfoboxTemplate
		end
	if myframe.args['txtFlagIconTemplate']~=nil then
		txtFlagIconTemplate=myframe.args.txtFlagIconTemplate
		end
	if myframe.args['txtHeader']~=nil then
		txtHeader=myframe.args.txtHeader
		end
	if myframe.args['txtLabel']~=nil then
		txtLabel=myframe.args.txtLabel
		end
	if myframe.args['txtContent']~=nil then
		txtContent=myframe.args.txtContent
		end
	if myframe.args['txtTeamHeaderStyle']~=nil then
		txtTeamHeaderStyle=myframe.args.txtTeamHeaderStyle
		end
	if myframe.args['txtLanguageCode']~=nil then
		txtLanguageCode=myframe.args.txtLanguageCode
		end
	if myframe.args['txtEditComment']~=nil then
		txtEditComment=myframe.args.txtEditComment
		end
	if myframe.args['txtStyleMain']~=nil then
		txtStyleMain=myframe.args.txtStyleMain
		end
	if myframe.args['txtStyleLevel2']~=nil then
		txtStyleLevel2=myframe.args.txtStyleLevel2
		end
	if (myframe.args['txtWidth_px']~=nil) and not (myframe.args['txtWidth_px']=='') then
		txtWidth_px=myframe.args.txtWidth_px
		end
	myframe['id']=entityid
	wdTitle=getLabelByEntity( entityid )
    myArgs={titel=wdTitle,grundstil="width:" .. txtWidth_px}
	img=mw.wikibase.getBestStatements(entityid, 'P18' )
	if (next(img)) then
		myArgs=addImage(entityid,'P18',img,myArgs)
		else
		img=mw.wikibase.getBestStatements(entityid, 'P154' )
		if (next(img)) then
		myArgs=addImage(entityid,'P154',img,myArgs)
		end
	end
    myArgs[txtHeaderStyle] = txtStyleMain
	iCounter=0
	claimFoundedDate=mw.wikibase.getBestStatements(entityid, 'P571' )
	if next(claimFoundedDate) then
    	iCounter=iCounter+1
	    myArgs[txtLabel .. iCounter]=txtFoundedDateLabel
    	myArgs[txtContent  .. iCounter]=mw.wikibase.formatValue(claimFoundedDate[1].mainsnak)  .. txtUnpackReference(myframe,tblProcessAllRefsForItemWD(myframe,claimFoundedDate[1].references,entityid,'P571'))
	end
	claimDissolvedDate=mw.wikibase.getBestStatements(entityid, 'P576' )
	if next(claimDissolvedDate) then
    	iCounter=iCounter+1
	    myArgs[txtLabel .. iCounter]=txtDissolvedDateLabel
    	myArgs[txtContent  .. iCounter]=mw.wikibase.formatValue(claimDissolvedDate[1].mainsnak) .. txtUnpackReference(myframe,tblProcessAllRefsForItemWD(myframe,claimDissolvedDate[1].references,entityid,'P576'))
	end
	claimPlace=mw.wikibase.getBestStatements(entityid, 'P159' )
	wdPlace=''
	iPlaces=0
    for key, value in pairs( claimPlace ) do
    	iPlaces=iPlaces+1
    	idPlace=value.mainsnak.datavalue.value.id
		wdCountry = readFirstStatement(idPlace,'P17')
		if (iPlaces>1) then
			wdPlace = wdPlace .. ' och '
			end
		wdPlace = wdPlace .. txtWikilink(idPlace)  .. ', ' .. myframe:expandTemplate{ title = txtTemplate .. ':' .. txtFlagIconTemplate , args={wdCountry}} .. ' [[' .. wdCountry .. ']]'
		txtYearfrom,txtYearTo = years(value) 
		if ((not isempty(txtYearfrom)) or not (isempty(txtYearTo))) then
				wdPlace=wdPlace .. ' (' .. txtYears(txtYearfrom,txtYearTo) .. ')'
			end
		wdPlace=wdPlace  .. txtUnpackReference(myframe,tblProcessAllRefsForItemWD(myframe,value.references,entityid,'P159')).. txtEditPen(entityid,value.id)
    	end
	if not (wdPlace=='') then
    	iCounter=iCounter+1
	    myArgs[txtLabel .. iCounter]=txtSeatLabel
    	myArgs[txtContent  .. iCounter]=wdPlace
		end
	claimHomeVenue=mw.wikibase.getAllStatements(entityid, 'P115' )
	wdHomeVenue=''
    for key, value in pairs( claimHomeVenue ) do
	    idHomeVenue=value.mainsnak.datavalue.value.id
		wdHomeVenue = wdHomeVenue .. txtWikilink(idHomeVenue)
		claimCapacity=mw.wikibase.getBestStatements(idHomeVenue,'P1083')
		wdCapacity=read(claimCapacity[1], 'amount' ) --['value']
		if not isempty(wdCapacity) then
			wdCapacity=string.sub(wdCapacity,2)
			end
		if not (isempty(wdCapacity)) then
			wdHomeVenue=wdHomeVenue .. ' (' .. wdCapacity .. ' ' .. txtSeats .. ')'
			end
		wdHomeVenue=wdHomeVenue .. txtUnpackReference(myframe,tblProcessAllRefsForItemWD(myframe,value.references,entityid,'P115')) .. txtEditPen(entityid,value.id)
	    end
	if not (wdHomeVenue=='') then
		iCounter=iCounter+1
	    myArgs[txtLabel .. iCounter]=txtHomeVenueLabel
		myArgs[txtContent  .. iCounter]=wdHomeVenue
		end
	claimWebsite=mw.wikibase.getBestStatements(entityid, 'P856' )
    if next(claimWebsite) then
		wdWebsite = claimWebsite[1].mainsnak.datavalue.value
		if (#wdWebsite>30) then
			wdWebsite='[' .. wdWebsite .. ' ' .. txtOfficialWebsite .. ']'
			end
    	iCounter=iCounter+1
	    myArgs[txtLabel .. iCounter]=txtWebsiteLabel
    	myArgs[txtContent  .. iCounter]=wdWebsite .. txtEditPen(entityid,'P856')
    	end
	if myframe.args['width_px']~=nil then
		txtWidth_px=myframe.args.width_px
	end
	claimNickName=mw.wikibase.getBestStatements(entityid, 'P1449' )
	if next(claimNickName) then
    	iCounter=iCounter+1
	    myArgs[txtLabel .. iCounter]=txtNickNameLabel
    	myArgs[txtContent  .. iCounter]=mw.wikibase.formatValue(claimNickName[1].mainsnak) .. txtUnpackReference(myframe,tblProcessAllRefsForItemWD(myframe,claimNickName[1].references,entityid,'P1449'))
	end
	bHasKit1,kit1=getKit(myframe,1,'Hemmaställ')
	bHasKit2,kit2=getKit(myframe,2,'Bortaställ')
	bHasKit3,kit3=getKit(myframe,3,'Libero')
	bHasKit=bHasKit1 or bHasKit2 or bHasKit3
	if (bHasKit) then
		iCounter=iCounter+1
	    myArgs[txtContent .. iCounter]='<table bgcolor=#ffffff><tr><td>' ..kit1 .. '</td><td>' .. kit2 .. '</td><td>' .. kit3 .. '</td></tr></table>'
	    myArgs[txtContent .. iCounter .. 'stil']='background:#ffffff'
	    end
	bHasResults,txtTeamresults=teamresults(myframe,entityid)
	if (bHasResults) then
		iCounter=iCounter+1
	    myArgs[txtHeader .. iCounter]=txtClubTeamResultHeader .. ' ' .. txtEditPen(entityid,'P1344','Black_pencil.svg')
		iCounter=iCounter+1
	    myArgs[txtContent .. iCounter]=txtTeamresults 
		end
	bHasCoaches,txtCoaches=teamcoaches(myframe,entityid)	
	if (bHasCoaches) then
		iCounter=iCounter+1
	    myArgs[txtHeader .. iCounter]=txtClubCoachesHeader .. ' ' .. txtEditPen(entityid,'P286','Black_pencil.svg')
		iCounter=iCounter+1
	    myArgs[txtContent .. iCounter]=txtCoaches
		end
    local claimsPlayersCategory = mw.wikibase.getBestStatements(entityid, 'P6112' )
	if next(claimsPlayersCategory) then
		txtPlayerCategorySitelink=mw.wikibase.getSitelink(read(claimsPlayersCategory[1],'id'))
		if txtPlayerCategorySitelink~=nil then
			iCounter=iCounter+1
		    myArgs[txtHeader .. iCounter]=txtPlayersHeaders
			iCounter=iCounter+1
		    myArgs[txtContent .. iCounter]='[[:' .. txtPlayerCategorySitelink .. '|' .. txtPlayersDescription .. ']]'
	    end
	end

	bHasNames,txtNames=teamnames(myframe,entityid)
	if (bHasNames) then
		iCounter=iCounter+1
	    myArgs[txtHeader .. iCounter]=txtNamesHeader
		iCounter=iCounter+1
	    myArgs[txtContent .. iCounter]='\'\''..txtNamesDescription..'\'\''
		iCounter=iCounter+1
	    myArgs[txtContent .. iCounter]=txtNames
		end
	myArgs['under']='[https://www.wikidata.org/wiki/' .. entityid .. ' '.. txtEditComment .. ']'
	--iDataItems
	if (iCounter<2) then
		myArgs['under']=myArgs['under']..'[['..txtCategory .. ':' .. txtFewItems .. ']]'
		end
	tmp = myframe:expandTemplate{ title = txtTemplate .. ':' .. txtInfoboxTemplate , args =myArgs}
	return tmp
	end
	end

function getKit(myframe,number,title)
	bHasKit=false
	if ((myframe.args['body'..number]~=nil and myframe.args['body'..number]~='') or (myframe.args['pattern_b'..number]~=nil and myframe.args['pattern_b'..number]~='')) then
		arrayKit={pattern_la =myframe.args['pattern_la'..number], pattern_b=myframe.args['pattern_b'..number], pattern_ra =myframe.args['pattern_ra'..number], leftarm =myframe.args['leftarm'..number],body= myframe.args['body'..number], rightarm =myframe.args['rightarm'..number],shorts=myframe.args['shorts'..number],socks =myframe.args['socks'..number], titel = title}
		kit = myframe:expandTemplate{ title = txtTemplate .. ':' .. txtKitTemplate , args =arrayKit}
		bHasKit=true
		else 
		kit=''
	end
	return bHasKit,kit
end


function teamresults (myframe,iTeam)
	local out = {}
	local all={}
	local d={}
	local t={}
    local claimsCompetition = mw.wikibase.getBestStatements(iTeam, 'P1344' )
    for key, value in pairs( claimsCompetition ) do
		local tmp={}
		local id = read(value,'id')
		tmp.iSeason=id
		tmp.iTeam=iTeam
		tmp=tblSeasonData(myframe,tmp,value,iTeam)
		if (tmp.iPosition=='') then
			tmp.iPosition=999999
			end
		tmp.iPosition=tonumber(tmp.iPosition)
		tmp.txtCompetition=txtWikilinkWOsitelink(read(value,'id'))
		table.insert(all,tmp)
    end 
    all,txt=showresults(myframe,all,"club")
	return #all>0,txt
end

function teamcoaches (myframe,iTeam)
	local out = {}
	local all={}
    local claimsCoaches= mw.wikibase.getBestStatements(iTeam, 'P286' )
    for key, value in pairs( claimsCoaches ) do
		local tmp={}
		local id = read(value,'id')
		local tmp=tblTeamInfo(myframe,value,iTeam,'P286')
--		tmp.txtCompetition=txtWikilinkWOsitelink(read(value,'id'))
		tmp.txtPerson=txtWikilinkWOsitelink(read(value,'id'))
		table.insert(all,tmp)
    end 
	all=sortPeople(all)
	txt= '<table style="class: biography vcard" width="100%"><tr><th>' .. txtNameHeader .. '</th><th>' .. txtSeasonHeader .. '</th></tr>'
	for i = 1,#all do
		txt=txt .. '<tr>'
		txt=txt .. '<td style="text-align:left;">' .. all[i].txtPerson .. '</td>'
		txt=txt .. '<td style="text-align:left;">' .. txtYears(all[i].yearfrom,all[i].yearto) .. txtUnpackReference(myframe,all[i].hasref,all[i].ref) .. all[i].edit .. '</td></tr>'
    end
	txt=txt .. '</table>'
	return #all>0,txt
end

function sortPeople(posts)
    table.sort(posts, function(a, b) return 
    	(compareDOWN(a.yearfrom,b.yearfrom)) or  
    	(a.yearfrom == b.yearfrom and compareUP(a.yearto,b.yearto)) or
    	(a.yearfrom == b.yearfrom and a.yearto == b.yearto and compareDOWN(a.datefrom,b.datefrom)) or  
    	(a.yearfrom == b.yearfrom and a.yearto == b.yearto and a.datefrom == b.datefrom and compareUP(a.dateto,b.dateto)) 
    end)
	return posts
end

function teamnames (myframe,iTeam)
	local out = {}
	local all={}
	local txt=''
    local claimsNames = mw.wikibase.getBestStatements(iTeam,'P2561' )
    for key, value in pairs( claimsNames ) do
		local tmp=tblTeamInfo(myframe,value,iTeam,'P286')
		tmp.txtName = read(value,'text')
		table.insert(all,tmp)
    end 
    table.sort(all, function(a, b) return a.datefrom < b.datefrom end)
	txt=txt .. '<table style="class: biography vcard" width="100%"><tr><th>' .. txtNameHeader .. '</th><th width="80px">' .. txtSeasonHeader .. '</th></tr>'
	txtCompetitionOld=''
	for i = 1,#all do
		txt=txt .. '<tr>'
		txt=txt .. '<td>' .. all[i].txtName .. '</td>'
		txt=txt .. '<td>' .. txtYears(all[i].yearfrom,all[i].yearto)  .. txtUnpackReference(myframe,all[i].hasref,all[i].ref) .. all[i].edit .. '</td></tr>'
    end
	txt=txt .. '</table>'
	return #all>0,txt
end

local function getSnakValue(snak, parameter)
	if snak.snaktype == "value" then
		-- call the respective snak parser
		if snak.datavalue.type == "string" then return snak.datavalue.value
		elseif snak.datavalue.type == "globecoordinate" then return printDatavalueCoordinate(snak.datavalue.value, parameter)
		elseif snak.datavalue.type == "quantity" then return printDatavalueQuantity(snak.datavalue.value, parameter)
		elseif snak.datavalue.type == "time" then return printDatavalueTime(snak.datavalue.value, parameter)
		elseif snak.datavalue.type == "wikibase-entityid" then return printDatavalueEntity(snak.datavalue.value, parameter)
		elseif snak.datavalue.type == "monolingualtext" then return printDatavalueMonolingualText(snak.datavalue.value, parameter)
		end
	end
	return mw.wikibase.renderSnak(snak)
end

-- from: https://stackoverflow.com/questions/2421695/first-character-uppercase-lua
function firstToUpper(str)
	if (str) then
	    return (str:gsub("^%l", string.upper))
	    else
	    return ''
	    end
end

function getCoaches (iTeam)
	local coaches={}
    local claimsCoaches= mw.wikibase.getBestStatements(iTeam, 'P286' )
    for key, value in pairs( claimsCoaches ) do
		local coach={}
		coach.id = read(value,'id')
		coach.data=txtWikilink(coach.id)
--		coach.txtName=txtWikilinkWOsitelink(coach.id)
--		coach.txtYearFrom,coach.txtYearTo  = years(value)
		coach.from,coach.to = readDates(value)
		coach.bHasRef,coach.ref=processAllRefsForWDItem_model(value.references,iTeam)
		coach.qid=iTeam
		coach.pid='P286'
--		place.txtWikilink=txtWikilink(place.id)
		table.insert(coaches,coach)
    end 
	return coaches
end

function getNames (iTeam)
	local names={}
    local claimNames= mw.wikibase.getBestStatements(iTeam, 'P2561' )
    for key, value in pairs( claimNames ) do
		local name={}
		name.data = read(value,'text')
		name.from,name.to = readDates(value)
		name.bHasRef,name.ref=processAllRefsForWDItem_model(value.references,iTeam)
		name.qid=iTeam
		name.pid='P2561'
		table.insert(names,name)
    end 
	return names
end

function getGeneralInformation(frame,qid,ismain)
	ret={}
	ret.label=getLabelByEntity(qid)
	ret.image=getImage(qid,'P18')
	ret.logo=getImage(qid,'P154')
	ret.founded=useStatement(qid, 'P571' )
	ret.dissolved=useStatement(qid, 'P576' )
	ret.arraySports=useStatement(qid, 'P641' )
	claimSports=mw.wikibase.getBestStatements(qid, 'P641' )
	if (ismain) then
		ret.location=getLocation (qid,'P159',true)
	end
	ret.homevenues=getHomeVenues(qid)
	ret.website=useStatement(qid, 'P856' )
	ret.nickname=useStatement(qid, 'P1449' )
	ret.coaches=getCoaches (qid)
	ret.results=getResults(qid)
	ret.names=getNames(qid)
    local claimsPlayersCategory = mw.wikibase.getBestStatements(qid, 'P6112' )
	if next(claimsPlayersCategory) then
		ret.txtPlayerCategory=mw.wikibase.getSitelink(read(claimsPlayersCategory[1],'id'))
		end
	return ret
end

return p