לדלג לתוכן

יחידה:PropertyLink: הבדלים בין גרסאות בדף

מתוך צפונות ויקי
מאין תקציר עריכה
מאין תקציר עריכה
שורה 61: שורה 61:
             return nil --the entity doesnt exist or have no claims
             return nil --the entity doesnt exist or have no claims
     end
     end
     property = entity.claims["p18"]
     property = entity.claims[frame.args[1] or "p18"]
     if property then
     if property then
         width = (frame and frame.args and frame.args["width"]) or "220px"
         width = (frame and frame.args and frame.args["width"]) or "220px"

גרסה מ־12:29, 6 באפריל 2013

יחידה זו משמשת כדי לקשר בוויקיפדיה לפי ויקינתונים. היחידה מיועדת לשימוש בעיקר בתבניות וכוללת את הפונקציות הבאות:

  • property או מאפיין - לקבלת קישור לפי "קביעה" מוויקינתונים
    • פרמטרים: שם המאפיין (property) המתאים (בצורה של P123). למשל בערך דמויי כלב:
      • {{#invoke:PropertyLink|property|p171}} - יחזיר "[[טורפים (סדרת יונקים)|טורפים]]" (טורפים), להבדיל מ־[[{{#property:p70}}]], שיחזיר "[[טורפים]]" (טורפים), שהוא דף פירושונים.
  • label או תווית: דומה לפונקציה הקודמת, רק שלא מחזיר קישור אלא ללא קישור - מחזיר את התווית (label) וללא תלות בקישור כלשהו שקיים או לא קיים בוויקיפדיה בעברית
    • פרמטרים: שם המאפיין (property) המתאים (בצורה של P123)
  • imageLink או תמונה: פונקציה שמחזירה תמונה שמתאימה לשילוב בתבנית מידע בערך.
    • פרמטרים:
      • פרמטר ראשון - (אופציונלי) אם לא מקבל פרמטר בכלל משתמש ב־d:Property:p18 (מאפיין כללי של תמונה), אחרת משתמש בפרמטר המאפיין המכיל את התמונה
      • width - גודל התמונה (אחרת 220px)
  • hasEntry או יש פריט: פונקציה שמחזירה "1" אם לערך יש פריט ויקינתונים; או "" אם אין.
    • פרמטרים: אין

הערות נוספות:

ייתכן שבעתיד תהיה תמיכה מובנית לפחות בחלק מהאפשרויות הנ"ל ראו בmeta:Wikidata/Notes/Inclusion_syntax#Items

local p = {}

function p.property(frame)
        entity = mw.wikibase.getEntity()
        if entity == nil or entity.claims == nil then return nil end--the entity doesnt exist or have no claims
        propertyName = nil
        if frame.args ==nil then
            propertyName = frame
        else
            propertyName = frame.args[1]
        end
        property = entity.claims[propertyName]
        if property == nil then return nil end--no such property for this item
        property = property[0]
        propValue = property.mainsnak.datavalue
        if propValue ==nil then return nil end --property doesnt exist
        if propValue['type']=='wikibase-entityid' then
            linkTarget = mw.wikibase.sitelink("Q" .. propValue.value['numeric-id'])
            linkTitle = mw.wikibase.label("Q" ..propValue.value['numeric-id'])
            if not ((linkTarget == nil) or (linkTitle==nil)) then
                return "[[" .. linkTarget .. "|" .. linkTitle .."]]"
            else
                return linkTitle
            end
        elseif propValue['type']=='string' then
            return propValue.value
        end
        return nil
end

-- Return the label for property, or the label of the linked entiy of that property
function p.label(frame)
       entity = mw.wikibase.getEntity()
        if entity == nil or entity.claims == nil then return nil end--the entity doesnt exist or have no claims
        propertyName = nil
        if frame.args ==nil then
            propertyName = frame
        else
            propertyName = frame.args[1]
        end
        property = entity.claims[propertyName]
        if property == nil then return nil end--no such property for this item
        
        property = property[0]
        propValue = property.mainsnak.datavalue
        if propValue ==nil then return nil end --property doesnt exist

        if propValue['type']=='wikibase-entityid' then
            return mw.wikibase.label("Q" ..propValue.value['numeric-id'])
        elseif propValue['type']=='string' then
            return propValue.value
        end
        return nil
end

    
--use this function to get associated image to be used in the article
function p.imageLink(frame)
    entity = mw.wikibase.getEntity()
    if entity == nil or entity.claims == nil then
            return nil --the entity doesnt exist or have no claims
    end
    property = entity.claims[frame.args[1] or "p18"]
    if property then
        width = (frame and frame.args and frame.args["width"]) or "220px"
        property = '[[File:' .. property[0].mainsnak.datavalue.value ..'|'..width .. ']]'
    end
    return property
end

return p