| Ten moduł jest używany na ponad 400 000 stron.
Aby uniknąć nadmiernego obciążenia serwera, wszystkie eksperymenty należy przeprowadzać w swoim brudnopisie dla modułów Lua lub na stronach testowych. Przetestowane zmiany powinny być dodawane w jednej edycji. Proszę przedyskutować każdą zmianę przed jej wprowadzaniem. Osoba dokonująca zmian w tym szablonie powinna być przygotowana do naprawienia niepożądanych efektów ubocznych swoich działań. |
Moduł do odczytywania i prezentowania wartości cech z wikidanych powiązanych z bieżącym artykułem. Zobacz też: Moduł:Wikidata.
P
Funkcja do odczytu i prezentacji wartości cechy.
parametry
Pole
|
Do czego służy?
|
Jak wypełnić?
|
1
|
Numer cechy
|
Np. 94 (herb) lub 395 (tablice rejestracyjne).
|
id
|
Opcjonalny identyfikator danych z Wikidanych. Domyślnie odczytywane są cechy z danych powiązanych z bieżącą stroną.
|
Np. Q42 .
|
separator
|
Separator wartości, gdy dostępna jest więcej niż jedna (zbiór):
i
- przecinek oraz spójnik i przed ostatnią wartością
lub
- przecinek oraz spójnik lub przed ostatnią wartością
inny
- jawnie podany inny separator
- brak
- przecinek (wartość domyślna)
|
Np. lub aby wyświetlić więcej niż jedną datę urodzin.
|
linkuj
|
Wartość logiczna do sterowania generowaniem linków:
tak
- generuj link zawsze (jeśli możliwy)
nie
- generuj tylko opis
- brak
- generuj w zależności od typu, tj. tak dla artykułów i koordynat, nie dla dat
|
Np. tak dla daty urodzin lub śmierci
|
procesor
|
Wtyczka do formatowania wartości
|
Pełna nazwa modułu, który w jest odpowiedzialny za formatowanie zawartości cechy.
|
bez wartości
|
Treść wartości specjalnej oznaczająca brak danej cechy.
|
Zaleca się podawanie odpowiedniej treści, gdyż zależy ona silnie od kontekstu cechy. Domyślna treść bez wartości raczej nie oddaje jasno informacji i dlatego artykuły, które korzystają z domyślnego tekstu umieszczane są w kategorii technicznej Kategoria:Cecha bez wartości.
|
ile
|
Maksymalna liczba wartości do odczytania.
|
Cecha może zawierać więcej niż jedną wartość oraz domyślnie zwracane są wszystkie najlepsze wyniki. Tym polem można ten zbiór dodatkowo ograniczyć. Pole musi mieć wartość nie mniejszą niż 1.
|
P518
|
Filtr kwalifikatora „[[:d:Property:P518|]]”
|
Lista akceptowanych wartości Qnnn. Dopuszczalne są też wartości specjalne novalue, somevalue i missing. Elementy należy oddzielać znakiem odstępu.
|
P625
|
Filtr kwalifikatora „[[:d:Property:P625|]]”
|
Wartość globe oznacza, że wymagana jest obecność kwalifikatora z jakimikolwiek współrzędnymi.
|
T
Funkcja do sprawdzenia obecności cechy.
parametry
Pole
|
Do czego służy?
|
Jak wypełnić?
|
1
|
Numer cechy
|
Np. 94 (herb) lub 395 (tablice rejestracyjne).
|
id
|
Opcjonalny identyfikator danych z Wikidanych. Domyślnie odczytywane są cechy z danych powiązanych z bieżącą stroną.
|
Np. Q42 .
|
P518
|
Filtr kwalifikatora „[[:d:Property:P518|]]”
|
Lista akceptowanych wartości Qnnn. Dopuszczalne są też wartości specjalne novalue, somevalue i missing. Elementy należy oddzielać znakiem odstępu.
|
P625
|
Filtr kwalifikatora „[[:d:Property:P625|]]”
|
Wartość globe oznacza, że wymagana jest obecność kwalifikatora z jakimikolwiek współrzędnymi.
|
etykieta
Funkcja do nazwy elementu (domyślnie z bieżącej strony). Jeśli nazwa nie istnieje to zwracana jest nazwa strony bez prefiksów.
parametry
Pole
|
Do czego służy?
|
1..N
|
Kod języka, w którym nazwę chcemy uzyskać. Jeśli podane jest więcej kodów niż jeden (w kolejnych parametrach) to zwracana jest pierwsza znaleziona nazwa. Brak parametrów oznacza domyślnie wybór nazwy w języku polskim.
|
id
|
Opcjonalny identyfikator danych z Wikidanych. Domyślnie odczytywane są cechy z danych powiązanych z bieżącą stroną.
|
id
Funkcja do odczytu identyfikatora strony na wikidanych.
parametry
Pole
|
Do czego służy?
|
1
|
Opcjonalny tytuł strony. Domyślnie brana jest strona bieżąca.
|
label
Funkcja do odczytu nazwy elementu w Wikidanych.
parametry
Pole
|
Do czego służy?
|
1
|
Identyfikator elementu w Wikidanych. Identyfikator musi się zaczynać na P lub Q, po których następuje ciąg cyfr dziesiętnych.
|
page
Funkcja do odczytu nazwy strony na Wikipedii.
parametry
Pole
|
Do czego służy?
|
1
|
Identyfikator elementu w Wikidanych. Identyfikator musi się zaczynać na P lub Q, po których następuje ciąg cyfr dziesiętnych.
|
V
i Dump
Funkcje techniczne do odczytu dowolnej gałęzi lub liścia z drzewa danych. V
zwraca wartość liścia, jeśli istnieje. Dump
robi zrzut diagnostyczny wybranej gałęzi.
parametry
Pole
|
Do czego służy?
|
1..N
|
Nazwa lub indeks coraz bardziej zagnieżdżonej gałęzi danych. Interesujące identyfikatory dla pierwszego poziomu to:
- id z identyfikatorem Qid
- claims ze zbiorem cech
- labels ze zbiorem etykiet w różnych językach
- sitelinks z interwiki i „medalami”
- bestclaims ze zbiorem odfiltrowanych cech, który można zawęzić parametrami opisanymi w funkcji P
|
id
|
Opcjonalny identyfikator danych z Wikidanych. Domyślnie odczytywane są cechy z danych powiązanych z bieżącą stroną.
|
przykłady
- {{#invoke:Wikidane|V|sitelinks|plwikivoyage|title}} – tytuł strony w Wikipodróżach
- {{#invoke:Wikidane|V|sitelinks|commonswiki|title}} – tytuł strony w repozytorium multimediów
- {{#invoke:Wikidane|V|bestclaims|P18|1|mainsnak|datavalue|value}} – nazwa pierwszego pliku z ilustracją w repozytorium multimediów
- {{#invoke:Wikidane|V|bestclaims|P625|1|mainsnak|datavalue|value|latitude}} – szerokość geograficzna z pierwszych dostępnych współrzędnych
- {{#invoke:Wikidane|V|bestclaims|P159|P625=globe|1|qualifiers|P625|1|datavalue|value|latitude}} – szerokość geograficzna z pierwszych dostępnych współrzędnych podanych jako kwalifikator dla siedziby przedsiębiorstwa
uwagi
Błędy
Błędy należy zgłaszać na stronie Wikipedia:Kawiarenka/Kwestie techniczne.
local moduleData = mw.loadData("Module:Wikidane/data")
local function loadArg(frame,id)
local result = frame.args[id]
if not result or (#result == 0) then
result = frame:getParent().args[id]
if not result or (#result == 0) then
return nil
end
end
return result
end
local function getEntityData(frame)
local qid = loadArg(frame, "id")
local data = mw.wikibase.getEntityObject(qid)
if not data then
return
end
local f = frame.args[1] and frame or frame:getParent()
local i = 1
if f.args[1] == "bestclaims" then
local pid = f.args[2]
if not pid then
return f, {}, 2
end
local sd = require("Module:Wikidane/select")
local _, qid, prop = sd.selectProperty(pid, sd.prepareFilters(frame), qid)
if not qid then
return nil
end
data = prop
i = 3
end
return f, data, i
end
return {
T = function(frame)
local qid = loadArg(frame, "id")
local pid = loadArg(frame, 1)
if not pid then
return moduleData.errorMissingPropertyId
end
local sd = require("Module:Wikidane/select")
local pid, qid, prop = sd.selectProperty(pid, sd.prepareFilters(frame), qid)
if qid then
return #prop
end
end,
P = function(frame)
local qid = loadArg(frame, "id")
local pid = loadArg(frame, 1)
if not pid then
return moduleData.errorMissingPropertyId
end
local sd = require("Module:Wikidane/select")
local pid, qid, prop = sd.selectProperty(pid, sd.prepareFilters(frame), qid, tonumber(loadArg(frame, "ile")))
if qid then
return require("Moduł:Wikidane/format").run(frame, pid, prop)
end
end,
etykieta = function(frame)
local qid = loadArg(frame, "id")
local entity = mw.wikibase.getEntityObject(qid)
if entity then
local i = 1
local lang = true
while lang do
lang = frame.args[i]
local result = entity:getLabel(lang)
if result and (#result > 0) then
return result
end
i = i + 1
end
end
return mw.title.getCurrentTitle().text .. moduleData.itemWithoutLabelCat
end,
id = function(frame)
local title = loadArg(frame, 1)
return title
and mw.wikibase.getEntityIdForTitle(mw.getContentLanguage():ucfirst(title))
or mw.wikibase.getEntityIdForCurrentPage()
end,
label = function(frame)
local id = loadArg(frame, 1)
if id and string.match(id, "^[PQ]%d+$") then
return mw.wikibase.label(id)
end
end,
page = function(frame)
local id = loadArg(frame, 1)
if id then
return mw.wikibase.sitelink(id)
else
return nil
end
end,
V = function(frame)
local f, data, i = getEntityData(frame)
if not data then
return nil
end
while true do
local index = f.args[i]
if not index then
return tostring(data)
end
data = data[index] or data[tonumber(index)]
if not data then
return
end
i = i + 1
end
end,
Dump = function(frame)
local f, data, i = getEntityData(frame)
if not data then
return moduleData.warnDump
end
while true do
local index = f.args[i]
if not index then
return "<pre>"..mw.dumpObject(data).."</pre>"..moduleData.warnDump
end
data = data[index] or data[tonumber(index)]
if not data then
return moduleData.warnDump
end
i = i + 1
end
end,
}