Редактирование:
Модуль:Wikidata/Interproject
Перейти к навигации
Перейти к поиску
Внимание:
Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы
войдёте
или
создадите учётную запись
, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.
Анти-спам проверка.
Не
заполняйте это!
local p = {} function p.getWikivoyageLink( context ) return p.getSisterProjectLink( 'voy', 'wikivoyage', context ) end function p.getWikibooksLink( context ) return p.getSisterProjectLink( 'b', 'wikibooks', context ) end function p.getWikiquoteLink( context ) return p.getSisterProjectLink( 'q', 'wikiquote', context ) end function p.getWikisourceLink( context ) return p.getSisterProjectLink( 's', 'wikisource', context ) end function p.getWikipediaLink( context ) return p.getSisterProjectLink( 'w', 'wiki', context ) end function p.getWiktionaryLink( context ) return p.getSisterProjectLink( 'wikt', 'wiktionary', context ) end function p.getSisterProjectLink( projectInterwikiPrefix, projectName, context ) -- проброс параметра from откуда угодно local entityId = nil local p_context = context while p_context do if p_context.args and p_context.args.from and p_context.args.from ~= '' then if p_context.args.from == '-' then return '' end entityId = p_context.args.from else entityId = mw.wikibase.getEntityIdForCurrentPage() end p_context = p_context:getParent() end -- По умолчанию старается достать ссылку на русском, иначе - на родном (P103) local wbStatus, sitelink = pcall( mw.wikibase.getSitelink, entityId, 'ru' .. projectName ) if wbStatus and sitelink then return projectInterwikiPrefix .. ':' .. sitelink end local wbStatus, langClaims = pcall( mw.wikibase.getBestStatements, entityId, 'P103' ) if wbStatus ~= true or not langClaims then return '' end local codes = mw.loadData( 'Module:Wikidata:Dictionary/P424' ) for _, claim in ipairs( langClaims ) do if claim.mainsnak and claim.mainsnak.datavalue and claim.mainsnak.datavalue.value and claim.mainsnak.datavalue.value.id then local codesById = codes[ claim.mainsnak.datavalue.value.id ] if codesById then for _, code in ipairs( codesById ) do wbStatus, sitelink = pcall( mw.wikibase.getSitelink, entityId, code .. projectName ) if wbStatus and sitelink then return projectInterwikiPrefix .. ':' .. code .. ':' .. sitelink end end end end end return '' end return p
Описание изменений:
Пожалуйста, учтите, что любой ваш вклад в проект «Валленланд Вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см.
Валленланд Вики:Авторские права
).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!
Отменить
Справка по редактированию
(в новом окне)
Шаблон, используемый на этой странице:
Модуль:Wikidata/Interproject/doc
(
править
)
Навигация
Персональные инструменты
Вы не представились системе
Обсуждение
Тёмная тема
Вклад
Создать учётную запись
Войти
Пространства имён
Модуль
Обсуждение
English
Просмотры
Читать
Править код
История
Ещё
Поиск
Навигация
Заглавная страница
Свежие правки
Случайная страница
Справка по MediaWiki
Инструменты
Ссылки сюда
Связанные правки
Служебные страницы
Сведения о странице
Получить короткий URL